<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=0,user-scalable=yes,maximum-scale=1.0">
<title>正则表达式30分钟入门教程-BeJSON.com</title>
<meta name="keywords" content="正则表达式30分钟入门教程">
<meta name="description" content="正则表达式30分钟入门教程">
<link rel="stylesheet" type="text/css" href="http://www.bejson.com/static/bejson/css/global.min.css?20200630" />
<link rel="stylesheet" type="text/css" href="http://www.bejson.com/static/bejson/css/indexCodeMirror.min.css" />
<link rel="stylesheet" type="text/css" href="http://www.bejson.com/static/bejson/css/swiper.min.css" />
<script src="http://www.bejson.com/static/ydxyt/www.bejson.com.js"></script>

<link rel="stylesheet" type="text/css" href="http://www.bejson.com/static/bejson/css/markdown.css" />
</head>
<script>
    function wexridvdrpkx(blockid) {
           switch (blockid){ 
     case 'INDEX_PC_HENGFU':{  
         document.writeln("<script async src="http://www.bejson.com/knownjson/regexJiaocheng/\&quot;https:\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js\&quot;"><\/script>");  
         document.writeln("<!-- bejson,970x90 -->");  
         document.writeln("<ins class=\"adsbygoogle\"");  
         document.writeln("     style=\"display:inline-block;width:970px;height:90px\"");  
         document.writeln("     data-ad-client=\"ca-pub-1130438465287629\"");  
         document.writeln("     data-ad-slot=\"8181570098\"><\/ins>");  
         document.writeln("<script>");  
         document.writeln("     (adsbygoogle = window.adsbygoogle || []).push({});");  
         document.writeln("<\/script>");  
       break; 
     }  
     case 'UNDER_CATEGORY':{  
         document.writeln("<a href="http://www.bejson.com/knownjson/regexJiaocheng/\&quot;\/knownjson\/aboutjson\/\&quot;" target=\"_blank\" style=\"font-size: 12px;color:black;\">什么是JSON<\/a>");  
         document.writeln("<a href="http://www.bejson.com/knownjson/regexJiaocheng/\&quot;\/knownjson\/demo\/\&quot;" target=\"_blank\" style=\"font-size: 12px;color:black;\">JSON的用法<\/a>");  
         document.writeln("<a href="http://www.bejson.com/knownjson/regexJiaocheng/\&quot;\/jsoneditoronline\/\&quot;" target=\"_blank\" style=\"font-size: 12px;\">JSON在线编辑<\/a>");  
         document.writeln("<a rel=\"external nofollow\" href="http://www.bejson.com/knownjson/regexJiaocheng/\&quot;http:\/\/t.cn\/A6LM1biX\&quot;" target=\"_blank\">七牛云<\/a>");  
         document.writeln("<a rel=\"external nofollow\" href="http://www.bejson.com/knownjson/regexJiaocheng/\&quot;https:\/\/url.cn\/5lGcoUy\&quot;" target=\"_blank\">腾讯云(99元\/年)<\/a>");  
         document.writeln("<a rel=\"nofollow\" style=\"color: red;\" href="http://www.bejson.com/knownjson/regexJiaocheng/\&quot;http:\/\/y3e.cn\/wBag2\&quot;" target=\"_blank\">香港\/美国服务器(318元\/年)<\/a>");  
         document.writeln("<a rel=\"external nofollow\" href="http://www.bejson.com/knownjson/regexJiaocheng/\&quot;https:\/\/www.hellojava.com\/article\/84\&quot;" target=\"_blank\">jQuery常用代码<\/a>");  
         document.writeln("<a href="http://www.bejson.com/knownjson/regexJiaocheng/\&quot;\/apidoc\/jquery\/\&quot;" target=\"_blank\">jQuery文档<\/a>");  
         document.writeln("<a rel=\"external nofollow\" href="http://www.bejson.com/knownjson/regexJiaocheng/\&quot;http:\/\/y3e.cn\/fJ0MH\&quot;" target=\"_blank\" style=\"color: blue;\" >阿*里*云3折<\/a>");  
       break; 
     }  
   }  
    }
</script>
<script>


</script>
<body class="load-indicator" data-loading="上传中，请稍候..." data-siteid="2">

<nav class="navbar navbar-inverse" role="navigation" style="border-radius: 0">
<div class="container clear-both">

<div class="navbar-header float-left">

<a class="navbar-brand" href="http://www.bejson.com/">
<img src="http://www.bejson.com/static/bejson/img/logo.png" height="30">
</a>
</div>

<div class="collapse navbar-collapse navbar-collapse-example float-left">

<ul class="nav navbar-nav">

<li class="dropdown " id="dropdown0" data-target="#dropdown0">
<a href="index.html#" class="dropdown-toggle" data-toggle="dropdown">JSON工具 <b class="caret"></b></a>
<ul class="dropdown-menu" role="menu">
 <li class="grade-li ">
<a href="http://www.bejson.com/json/format/" class="text-nav-danger-import">
格式化校验 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/jsonviewernew/" class="text-nav-info-import">
JSON视图 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/zhuanyi/" class="text-nav-info-import">
JSON压缩转义 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/json2javapojo/new/" class="text-nav-info-import">
JSON生成Java实体类 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/convert/json2csharp/" class="text-nav-info-import">
JSON转C#实体类 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/jsoneditoronline/" class="text-nav-info-import">
JSON在线编辑器 </a>
</li>
<li class="divider"></li> <li class="grade-li ">
<a href="http://www.bejson.com/json/jsonsort/" class="text-nav-info-import">
JSON排序 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/color/" class="text-nav-info-import">
JSON着色 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/xml2json/" class="text-nav-info-import">
XML-JSON互转 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/jsontools/json2get/" class="text-nav-info-import">
JSON和GET请求字符串互转 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/json/col2json/" class="text-nav-info-import">
Excel转Json </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/json/json2excel/" class="text-nav-info-import">
JSON转csv、excel </a>
</li>
<li class="divider"></li> <li class="grade-li ">
<a href="http://www.bejson.com/json/json2yaml/" class="text-nav-info-import">
在线JSON转yaml,yaml转JSON </a>
</li>
<li class="grade-li hidden">
<a href="http://www.bejson.com/json2javapojo/" class="text-nav-info-import">
JSON字符串转换成Java实体类(POJO)旧版本 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/explore/index_new/" class="text-nav-info-import">
JSON校验格式化工具(新) </a>
</li>
</ul>
</li>
<li class="dropdown " id="dropdown1" data-target="#dropdown1">
<a href="index.html#" class="dropdown-toggle" data-toggle="dropdown">编码/加密 <b class="caret"></b></a>
<ul class="dropdown-menu" role="menu">
<li class="grade-li ">
<a href="http://www.bejson.com/enc/base64/" class="text-nav-info-import">
Base64加密、解密 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/enc/md5/" class="text-nav-info-import">
MD5加密 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/enc/md5dsc/" class="text-nav-info-import">
MD5解密 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/enc/aesdes/" class="text-nav-info-import">
DES,AES等对称加密解密 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/enc/rsa/" class="text-nav-info-import">
RSA,RSA2公钥私钥加密解密 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/enc/sha/" class="text-nav-info-import">
SHA加密 </a>
</li>
<li class="divider"></li> <li class="grade-li ">
<a href="http://www.bejson.com/enc/escape/" class="text-nav-info-import">
Escape编码 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/enc/urlencode/" class="text-nav-info-import">
URL编码 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/enc/eval_package/" class="text-nav-info-import">
Javascript Eval加密解密 </a>
</li>
 <li class="grade-li ">
<a href="http://www.bejson.com/encrypt/jsobfuscate/" class="text-nav-info-import">
Javascript加密混淆 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/enc/morse/" class="text-nav-info-import">
摩斯密码加密解密 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/convert/unicode_chinese/" class="text-nav-info-import">
unicode中文互转 </a>
</li>
<li class="divider"></li> </ul>
</li>
<li class="dropdown " id="dropdown2" data-target="#dropdown2">
<a href="index.html#" class="dropdown-toggle" data-toggle="dropdown">格式化 <b class="caret"></b></a>
<ul class="dropdown-menu" role="menu">
<li class="grade-li ">
<a href="http://www.bejson.com/jshtml_format/" class="text-nav-danger-import">
Javascript/HTML压缩、格式化 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/otherformat/css/" class="text-nav-info-import">
CSS压缩、格式化 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/otherformat/xmlsort/" class="text-nav-info-import">
XML排序、压缩、格式化 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/otherformat/sql/" class="text-nav-info-import">
SQL压缩、格式化 </a>
</li>
</ul>
</li>
<li class="dropdown " id="dropdown3" data-target="#dropdown3">
<a href="index.html#" class="dropdown-toggle" data-toggle="dropdown">网络 <b class="caret"></b></a>
<ul class="dropdown-menu" role="menu">
<li class="grade-li ">
<a href="http://www.bejson.com/network/profession_request_tools/" class="text-nav-info-import">
模拟HTTP请求工具 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/httputil/websocket/" class="text-nav-info-import">
在线模拟websocket请求工具 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/httputil/getip/" class="text-nav-info-import">
获取你的IP </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/httputil/queryip/" class="text-nav-info-import">
获取IP信息 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/httputil/ip2addr/" class="text-nav-info-import">
IP定位周边信息 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/httputil/clientinfo/" class="text-nav-info-import">
获取您的浏览器信息 </a>
</li>
<li class="divider"></li> <li class="grade-li ">
<a href="http://www.bejson.com/httputil/useragent/" class="text-nav-info-import">
常用USER_AGENT </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/convert/ip2int/" class="text-nav-info-import">
IP转数字,数字转IP </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/convert/subnetmask/" class="text-nav-info-import">
TCP/IP子网掩码计算换算 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/network/newsubnetmask/" class="text-nav-info-import">
子网掩码换算(新) </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/httputil/cipher_suites/" class="text-nav-info-import">
SSL协议套件探测 </a>
</li>
</ul>
</li>
<li class="dropdown double-row" id="dropdown4" data-target="#dropdown4">
<a href="index.html#" class="dropdown-toggle" data-toggle="dropdown">前端 <b class="caret"></b></a>
<ul class="dropdown-menu" role="menu">
<li class="grade-li ">
<a href="http://www.bejson.com/ui/tuchuang/" class="text-nav-info-import">
图床 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/convert/gif2frame/" class="text-nav-info-import">
在线GIF转成帧 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/convert/html_js/" class="text-nav-info-import">
在线html转js,js转html </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/ui/fontawesome/" class="text-nav-info-import">
fontawesome图标在线查询 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/othertools/keycodes/" class="text-nav-info-import">
在线获取键盘按键值(keycode,ascii码) </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/convert/str2img/" class="text-nav-info-import">
字符生成线条字 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/ui/compress_img/" class="text-nav-info-import">
图片压缩工具 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/ui/gen_player/" class="text-nav-info-import">
生成音乐播放器 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/ui/photoshop/" class="text-nav-info-import">
在线photoshop </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/pages/cooleditor/" class="text-nav-info-import">
在线代码编辑器 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/ui/borderradius/" class="text-nav-info-import">
在线生成圆角 </a>
</li>
<li class="grade-li ">
<a href="https://h5.bce.baidu.com/store" class="text-nav-info-import" target="_blank">
H5模板在线制作 </a>
</li>
<li class="divider clear-both"></li> <li class="grade-li ">
<a href="http://www.bejson.com/ui/icomaker/" class="text-nav-info-import">
ICO图标在线生成转换工具 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/ui/create_logo/" class="text-nav-info-import">
IOS安卓logo在线生成器 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/ui/ueditor/" class="text-nav-info-import">
ueditor在线代码编辑器 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/ui/runjs/" class="text-nav-info-import">
RunJS在线编辑器  </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/ui/safecolor/" class="text-nav-info-import">
WEB安全色 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/ui/getcolor/" class="text-nav-info-import">
在线调色板 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/ui/imagehandler/" class="text-nav-info-import">
在线图片大小格式(支持webp)转换 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/ui/image2base64/" class="text-nav-info-import">
在线图片转Base64编码 </a>
</li>
<li class="grade-li ">
<a href="https://www.iconfont.cn/plus/collections/index" class="text-nav-info-import" target="_blank">
阿里巴巴矢量图标库 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/ui/phonesize/" class="text-nav-info-import">
iPhone/iPad/Android UI尺寸规范 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/ui/svg_editor/" class="text-nav-info-import">
SVG代码编辑预览 </a>
</li>
<li class="grade-li ">
<a href="https://fontawesome.com/icons?from=io" class="text-nav-info-import" target="_blank">
fontawesome矢量图标库 </a>
</li>
<li class="divider clear-both"></li> <li class="grade-li ">
<a href="http://www.bejson.com/ui/openweb/" class="text-nav-info-import">
弹出窗口生成器 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/othertools/libcdn/" class="text-nav-info-import">
常用js库 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/ui/texteditor/" class="text-nav-info-import">
在线自动排版工具 </a>
</li>
</ul>
</li>
<li class="dropdown " id="dropdown5" data-target="#dropdown5">
<a href="index.html#" class="dropdown-toggle" data-toggle="dropdown">后端 <b class="caret"></b></a>
<ul class="dropdown-menu" role="menu">
<li class="grade-li ">
<a href="http://www.bejson.com/json2javapojo/new/" class="text-nav-info-import">
JSON生成Java实体类 </a>
</li>
<li class="grade-li ">
<a href="https://java.bejson.com/generator/" class="text-nav-info-import" target="_blank">
SQL生成Java代码 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/convert/json2csharp/" class="text-nav-info-import">
JSON转C#实体类 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/devtools/sql2pojo/" class="text-nav-info-import">
mysql转Java实体类 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/devtools/sql2csharppojo/" class="text-nav-info-import">
SQL转CSharp实体类 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/othertools/sql2pojo/" class="text-nav-info-import">
oracle转Java实体类 </a>
</li>
<li class="divider"></li> <li class="grade-li ">
<a href="http://www.bejson.com/devtools/sqlview/" class="text-nav-info-import">
数据库插入、修改语句字段视图 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/devtools/properties2yaml/" class="text-nav-info-import">
properties转yaml </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/validators/yaml_editor/" class="text-nav-info-import">
YAML、YML在线编辑(校验)器 </a>
</li>
</ul>
</li>
<li class="dropdown double-row" id="dropdown6" data-target="#dropdown6">
<a href="index.html#" class="dropdown-toggle" data-toggle="dropdown">转换 <b class="caret"></b></a>
<ul class="dropdown-menu" role="menu">
<li class="grade-li ">
<a href="http://www.bejson.com/convert/html_string/" class="text-nav-info-import">
字符串拼接（多语言） </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/convert/camel_underscore/" class="text-nav-info-import">
驼峰转下划线，下划线转驼峰 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/convert/html_js/" class="text-nav-info-import">
在线html转js，js转html </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/convert/ueditor2markdown/" class="text-nav-info-import">
在线ueditor富文本编辑器转markdown语法 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/convert/deserialize/" class="text-nav-info-import">
PHP反序列化成JSON和代码 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/ui/imagehandler/" class="text-nav-info-import">
在线图片大小格式(支持webp)转化 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/convert/image_to_svg/" class="text-nav-info-import">
jpg，png图片在线转svg </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/convert/map/" class="text-nav-info-import">
在线地图经纬度定位换算 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/ui/px2em/" class="text-nav-info-import">
px转em，em转px </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/ui/image2base64/" class="text-nav-info-import">
在线图片转Base64编码 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/convert/unicode_chinese/" class="text-nav-info-import">
unicode中文互转 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/convert/shorturl/" class="text-nav-info-import">
在线短地址互转 </a>
</li>
<li class="divider clear-both"></li> <li class="grade-li ">
<a href="http://www.bejson.com/convert/unix/" class="text-nav-info-import">
Unix时间互转（日期转毫秒） </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/convert/jinzhi/" class="text-nav-info-import">
进制转换  </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/convert/ox2str/" class="text-nav-info-import">
16进制到文本字符串 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/convert/uplowercase/" class="text-nav-info-import">
字母大小写转换 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/convert/rgbhex/" class="text-nav-info-import">
RGB原色和HEX16互转 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/convert/file2pdf/" class="text-nav-info-import">
在线文档转PDF </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/convert/qrcode/" class="text-nav-info-import">
二维码生成和解码 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/convert/numtohz/" class="text-nav-info-import">
数字转中文（人民币） </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/convert/filesize/" class="text-nav-info-import">
在线文件大小换算 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/convert/nativeascii/" class="text-nav-info-import">
NATIVE/ASCII在线转换工具 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/convert/htmlubb/" class="text-nav-info-import">
Html与UBB代码互相转换工具 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/convert/topinying/" class="text-nav-info-import">
汉字转换拼音 </a>
</li>
<li class="divider clear-both"></li> <li class="grade-li ">
<a href="http://www.bejson.com/convert/fullhalf/" class="text-nav-info-import">
全角半角转换 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/convert/j2f/" class="text-nav-info-import">
简繁体火星文互转 </a>
</li>
 <li class="grade-li ">
<a href="http://www.bejson.com/convert/html2markdown/" class="text-nav-info-import">
Html转换为MarkDown工具 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/convert/video2audio/" class="text-nav-danger-import">
视频秒转音频 </a>
</li>
</ul>
</li>
<li class="dropdown double-row" id="dropdown7" data-target="#dropdown7">
<a href="index.html#" class="dropdown-toggle" data-toggle="dropdown">其他 <b class="caret"></b></a>
<ul class="dropdown-menu" role="menu">
<li class="grade-li ">
<a href="http://www.bejson.com/othertools/compare/" class="text-nav-info-import">
字符串数字对比 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/othertools/stringarraysort/" class="text-nav-info-import">
字符串数组在线排序工具 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/othertools/regex/" class="text-nav-info-import">
正则表达式测试 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/testtools/xpath/" class="text-nav-info-import">
xpath测试 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/othertools/barcode/" class="text-nav-info-import">
条形码生成器 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/othertools/keycodes/" class="text-nav-info-import">
在线获取键盘按键值(ASCII码) </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/othertools/cron/" class="text-nav-info-import">
Cron表达式生成器 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/othertools/cronvalidate/" class="text-nav-info-import">
Cron表达式校验工具 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/othertools/fanyi/" class="text-nav-info-import">
中英互译 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/othertools/findelement/" class="text-nav-info-import">
寻找图片、链接或xpath寻找元素 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/othertools/finddif3/" class="text-nav-info-import">
文字对比找不同处 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/others/comparecode/" class="text-nav-info-import">
在线代码对比/合并工具 </a>
</li>
<li class="divider clear-both"></li> <li class="grade-li ">
<a href="http://www.bejson.com/othertools/regex_create/" class="text-nav-info-import">
正则表达式代码生成工具 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/othertools/sqlAppend/" class="text-nav-info-import">
SQL追加或去除双引号 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/othertools/removeDuplicate/" class="text-nav-info-import">
去除重复字符串 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/othertools/sortwords/" class="text-nav-info-import">
在线根据首字母排序 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/chargeservice/ocr/" class="text-nav-info-import">
在线文字识别 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/other/qqskey/" class="text-nav-info-import">
获取QQ的key </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/othertools/wordpress/" class="text-nav-info-import">
在线查询WordPress主题模板出处 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/othertools/pic2weibo/" class="text-nav-info-import">
根据微博图片寻找微博出处 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/othertools/ziponline/" class="text-nav-info-import">
在线解压缩获取文件列表名 </a>
</li>
 <li class="grade-li ">
<a href="http://www.bejson.com/othertools/createaliweixinqrcode/" class="text-nav-info-import">
支付宝、微信收款码共存 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/other/music/" class="text-nav-info-import">
轻音乐 </a>
</li>
</ul>
</li>
<li class="dropdown double-row" id="dropdown8" data-target="#dropdown8">
<a href="index.html#" class="dropdown-toggle" data-toggle="dropdown">文档 <b class="caret"></b></a>
<ul class="dropdown-menu" role="menu">
<li class="grade-li ">
<a href="http://www.bejson.com/doc/systemd/" class="text-nav-info-import">
Systemd 入门教程：命令篇 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/apidoc/jquery/" class="text-nav-info-import">
jQuery文档 </a>
</li>
<li class="grade-li ">
<a href="https://v3.bootcss.com/components/" class="text-nav-info-import" target="_blank">
Bootstrap文档 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/doc/vuejs/" class="text-nav-info-import">
VueJs文档 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/doc/openqq/" class="text-nav-info-import">
腾讯开发平台 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/knownjson/aboutjsonp/" class="text-nav-info-import">
什么是jsonp </a>
</li>
<li class="grade-li ">
<a href="https://developers.weixin.qq.com/doc/offiaccount/Getting_Started/Overview.html" class="text-nav-info-import" target="_blank">
微信公众平台开发文档 </a>
</li>
<li class="grade-li ">
<a href="https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html" class="text-nav-info-import" target="_blank">
微信JSSDK开发文档 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/doc/payweixin/" class="text-nav-info-import">
微信支付开发文档 </a>
</li>
 <li class="grade-li ">
<a href="http://www.bejson.com/doc/payweixinsl/" class="text-nav-info-import">
微信支付服务商文档 </a>
</li>
<li class="grade-li ">
<a href="https://developers.weixin.qq.com/miniprogram/dev/api/" class="text-nav-info-import" target="_blank">
微信小程序开发文档 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/doc/taobao/" class="text-nav-info-import">
淘宝开发文档 </a>
</li>
<li class="divider clear-both"></li> <li class="grade-li ">
<a href="http://www.bejson.com/doc/alipay/" class="text-nav-info-import">
支付宝开发文档 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/doc/wisdomstores/" class="text-nav-info-import">
支付宝智慧门店文档 </a>
</li>
<li class="grade-li ">
<a href="https://opendocs.alipay.com/open/399" class="text-nav-info-import" target="_blank">
支付宝开发商文档 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/doc/AndroidManifest/" class="text-nav-info-import">
Android权限大全 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/knownjson/aboutjson/" class="text-nav-info-import">
什么是JSON </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/knownjson/demo/" class="text-nav-info-import">
举个栗子 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/knownjson/webInterface/" class="text-nav-info-import">
JSON API免费接口 </a>
</li>
<li class="grade-li grade-li-active">
<a href="index.html" class="text-nav-info-import">
正则表达式30分钟入门教程 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/knownjson/httpstate/" class="text-nav-info-import">
HTTP状态码查询 </a>
</li>
 <li class="grade-li ">
<a href="http://www.bejson.com/doc/httpcontent/" class="text-nav-info-import">
HTTP Content对照表 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/doc/ascii/" class="text-nav-info-import">
ASCII码对照表 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/doc/port/" class="text-nav-info-import">
常用端口解释 </a>
</li>
<li class="divider clear-both"></li> <li class="grade-li hidden">
<a href="http://www.bejson.com/doc/systemd2/" class="text-nav-info-import">
Systemd 入门教程：实战篇 </a>
</li>
</ul>
</li>
<li class="dropdown " id="dropdown9" data-target="#dropdown9">
<a href="index.html#" class="dropdown-toggle" data-toggle="dropdown">平台工具 <b class="caret"></b></a>
<ul class="dropdown-menu" role="menu">
<li class="grade-li ">
<a href="http://www.bejson.com/tool/weixindebug/" class="text-nav-info-import">
微信公众平台调试工具 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/tools/weixinpay/" class="text-nav-info-import">
微信公众平台支付接口调试工具 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/tools/weixinpayjsapi/" class="text-nav-info-import">
微信支付接口签名校验工具 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/tools/weixinmpcardsign/" class="text-nav-info-import">
微信卡券JSAPI签名校验工具 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/tools/weixinmpjsapisign/" class="text-nav-info-import">
微信 JS 接口签名校验工具 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/tools/weixinqydebug/" class="text-nav-info-import">
微信企业号调试工具 </a>
</li>
<li class="divider"></li> <li class="grade-li ">
<a href="http://www.bejson.com/tools/qqwebtools/" class="text-nav-info-import">
QQ互联API调试工具 </a>
</li>
 <li class="grade-li ">
<a href="http://www.bejson.com/tools/taobaosessionPage/" class="text-nav-info-import">
淘宝oauth2.0测试工具 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/tools/taobaoapitool/" class="text-nav-info-import">
淘宝API测试工具 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/tools/taobaoerrorCodeSearch/" class="text-nav-info-import">
淘宝错误码查询工具 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/tools/taobao/" class="text-nav-info-import">
淘宝商品属性工具 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/tools/alipaycloudparse/" class="text-nav-info-import">
支付宝联调日志排查 </a>
</li>
<li class="divider"></li> <li class="grade-li ">
<a href="https://openhome.alipay.com/platform/appDaily.htm?tab=info" class="text-nav-info-import" target="_blank">
支付宝API工具 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/tools/alipaytroubleshoot/" class="text-nav-info-import">
开发者自助排查工具 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/tools/weiboapi/" class="text-nav-info-import">
新浪微博API工具 </a>
</li>
</ul>
</li>
<li class="dropdown " id="dropdown10" data-target="#dropdown10">
<a href="index.html#" class="dropdown-toggle" data-toggle="dropdown">更多 <b class="caret"></b></a>
<ul class="dropdown-menu" role="menu">
<li class="grade-li ">
<a href="http://www.bejson.com/knownjson/webInterface/" class="text-nav-info-import">
免费JSON接口 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/tools/sitemap/" class="text-nav-info-import">
sitemap提交入口大全 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/tools/beian/" class="text-nav-info-import">
备案查询 </a>
</li>
 <li class="grade-li ">
<a href="http://www.bejson.com/soft/" class="text-nav-info-import">
常用软件下载 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/other/blogs/" class="text-nav-info-import">
Blogs </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/knownjson/msg/" class="text-nav-info-import">
留言 </a>
</li>
<li class="divider"></li> <li class="grade-li ">
<a href="http://www.bejson.com/other/whatisnew/" class="text-nav-info-import">
更新日志 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/other/ads/" class="text-nav-info-import">
广告招租 </a>
</li>
<li class="grade-li ">
<a href="http://www.bejson.com/demo/sinaweather/" class="text-nav-info-import">
新浪天气API接口测试用例 </a>
</li>
</ul>
</li>
</ul>
</div>
<div class="recent-use-select">
<select data-placeholder="功能搜索" class="chosen-select form-control">
<option value=""></option>
<option value="/">首页</option>
<option value="/json/format/">格式化校验</option>
<option value="/jsonviewernew/">JSON视图</option>
<option value="/zhuanyi/">JSON压缩转义</option>
<option value="/json2javapojo/new/">JSON生成Java实体类</option>
<option value="/convert/json2csharp/">JSON转C#实体类</option>
<option value="/jsoneditoronline/">JSON在线编辑器</option>
<option value="/json/jsonsort/">JSON排序</option>
<option value="/color/">JSON着色</option>
<option value="/xml2json/">XML-JSON互转</option>
<option value="/jsontools/json2get/">JSON和GET请求字符串互转</option>
<option value="/json/col2json/">Excel转Json</option>
<option value="/json/json2excel/">JSON转csv、excel</option>
<option value="/json/json2yaml/">在线JSON转yaml,yaml转JSON</option>
<option value="/explore/index_new/">JSON校验格式化工具(新)</option>
<option value="/enc/base64/">Base64加密、解密</option>
<option value="/enc/md5/">MD5加密</option>
<option value="/enc/aesdes/">DES,AES等对称加密解密</option>
<option value="/enc/rsa/">RSA,RSA2公钥私钥加密解密</option>
<option value="/enc/sha/">SHA加密</option>
<option value="/enc/escape/">Escape编码</option>
<option value="/enc/urlencode/">URL编码</option>
<option value="/enc/eval_package/">Javascript Eval加密解密</option>
<option value="/encrypt/jsobfuscate/">Javascript加密混淆</option>
<option value="/enc/morse/">摩斯密码加密解密</option>
<option value="/convert/unicode_chinese/">unicode中文互转</option>
<option value="/jshtml_format/">Javascript/HTML压缩、格式化</option>
<option value="/otherformat/css/">CSS压缩、格式化</option>
<option value="/otherformat/xmlsort/">XML排序、压缩、格式化</option>
<option value="/otherformat/sql/">SQL压缩、格式化</option>
<option value="/network/profession_request_tools/">模拟HTTP请求工具</option>
<option value="/httputil/websocket/">在线模拟websocket请求工具</option>
<option value="/httputil/getip/">获取你的IP</option>
<option value="/httputil/queryip/">获取IP信息</option>
<option value="/httputil/ip2addr/">IP定位周边信息</option>
<option value="/httputil/clientinfo/">获取您的浏览器信息</option>
<option value="/httputil/useragent/">常用USER_AGENT</option>
<option value="/convert/ip2int/">IP转数字,数字转IP</option>
<option value="/convert/subnetmask/">TCP/IP子网掩码计算换算</option>
<option value="/network/newsubnetmask/">子网掩码换算(新)</option>
<option value="/ui/tuchuang/">图床</option>
<option value="/convert/gif2frame/">在线GIF转成帧</option>
<option value="/convert/html_js/">在线html转js,js转html</option>
<option value="/ui/fontawesome/">fontawesome图标在线查询</option>
<option value="/othertools/keycodes/">在线获取键盘按键值(keycode,ascii码)</option>
<option value="/convert/str2img/">字符生成线条字</option>
<option value="/ui/compress_img/">图片压缩工具</option>
<option value="/ui/gen_player/">生成音乐播放器</option>
<option value="/ui/photoshop/">在线photoshop</option>
<option value="/pages/cooleditor/">在线代码编辑器</option>
<option value="/ui/borderradius/">在线生成圆角</option>
<option value="/ui/icomaker/">ICO图标在线生成转换工具</option>
 <option value="/ui/create_logo/">IOS安卓logo在线生成器</option>
<option value="/ui/ueditor/">ueditor在线代码编辑器</option>
<option value="/ui/runjs/">RunJS在线编辑器</option>
<option value="/ui/safecolor/">WEB安全色</option>
<option value="/ui/getcolor/">在线调色板</option>
<option value="/ui/imagehandler/">在线图片大小格式(支持webp)转换</option>
<option value="/ui/image2base64/">在线图片转Base64编码</option>
<option value="/ui/phonesize/">iPhone/iPad/Android UI尺寸规范</option>
<option value="/ui/svg_editor/">SVG代码编辑预览</option>
<option value="/ui/openweb/">弹出窗口生成器</option>
<option value="/othertools/libcdn/">常用js库</option>
<option value="/ui/texteditor/">在线自动排版工具</option>
<option value="/json2javapojo/new/">JSON生成Java实体类</option>
<option value="/convert/json2csharp/">JSON转C#实体类</option>
<option value="/devtools/sql2pojo/">mysql转Java实体类</option>
<option value="/devtools/sql2csharppojo/">SQL转CSharp实体类</option>
<option value="/othertools/sql2pojo/">oracle转Java实体类</option>
<option value="/devtools/sqlview/">数据库插入、修改语句字段视图</option>
<option value="/devtools/properties2yaml/">properties转yaml</option>
<option value="/validators/yaml_editor/">YAML、YML在线编辑(校验)器</option>
<option value="/convert/html_string/">字符串拼接（多语言）</option>
<option value="/convert/camel_underscore/">驼峰转下划线，下划线转驼峰</option>
<option value="/convert/html_js/">在线html转js，js转html</option>
<option value="/convert/ueditor2markdown/">在线ueditor富文本编辑器转markdown语法</option>
<option value="/convert/deserialize/">PHP反序列化成JSON和代码</option>
<option value="/ui/imagehandler/">在线图片大小格式(支持webp)转化</option>
<option value="/convert/image_to_svg/">jpg，png图片在线转svg</option>
<option value="/convert/map/">在线地图经纬度定位换算</option>
<option value="/ui/px2em/">px转em，em转px</option>
<option value="/ui/image2base64/">在线图片转Base64编码</option>
<option value="/convert/unicode_chinese/">unicode中文互转</option>
<option value="/convert/shorturl/">在线短地址互转</option>
<option value="/convert/unix/">Unix时间互转（日期转毫秒）</option>
<option value="/convert/jinzhi/">进制转换</option>
<option value="/convert/ox2str/">16进制到文本字符串</option>
<option value="/convert/uplowercase/">字母大小写转换</option>
<option value="/convert/rgbhex/">RGB原色和HEX16互转</option>
<option value="/convert/file2pdf/">在线文档转PDF</option>
<option value="/convert/qrcode/">二维码生成和解码</option>
<option value="/convert/numtohz/">数字转中文（人民币）</option>
<option value="/convert/filesize/">在线文件大小换算</option>
<option value="/convert/nativeascii/">NATIVE/ASCII在线转换工具</option>
<option value="/convert/htmlubb/">Html与UBB代码互相转换工具</option>
<option value="/convert/topinying/">汉字转换拼音</option>
<option value="/convert/fullhalf/">全角半角转换</option>
<option value="/convert/j2f/">简繁体火星文互转</option>
<option value="/convert/html2markdown/">Html转换为MarkDown工具</option>
<option value="/convert/video2audio/">视频秒转音频</option>
<option value="/othertools/compare/">字符串数字对比</option>
<option value="/othertools/stringarraysort/">字符串数组在线排序工具</option>
<option value="/othertools/regex/">正则表达式测试</option>
<option value="/testtools/xpath/">xpath测试</option>
<option value="/othertools/barcode/">条形码生成器</option>
<option value="/othertools/keycodes/">在线获取键盘按键值(ASCII码)</option>
<option value="/othertools/cron/">Cron表达式生成器</option>
<option value="/othertools/cronvalidate/">Cron表达式校验工具</option>
<option value="/othertools/fanyi/">中英互译</option>
<option value="/othertools/findelement/">寻找图片、链接或xpath寻找元素</option>
<option value="/othertools/finddif3/">文字对比找不同处</option>
<option value="/others/comparecode/">在线代码对比/合并工具</option>
<option value="/othertools/regex_create/">正则表达式代码生成工具</option>
<option value="/othertools/sqlAppend/">SQL追加或去除双引号</option>
<option value="/othertools/removeDuplicate/">去除重复字符串</option>
<option value="/othertools/sortwords/">在线根据首字母排序</option>
<option value="/chargeservice/ocr/">在线文字识别</option>
<option value="/other/qqskey/">获取QQ的key</option>
<option value="/othertools/wordpress/">在线查询WordPress主题模板出处</option>
<option value="/othertools/pic2weibo/">根据微博图片寻找微博出处</option>
<option value="/othertools/ziponline/">在线解压缩获取文件列表名</option>
<option value="/othertools/createaliweixinqrcode/">支付宝、微信收款码共存</option>
<option value="/other/music/">轻音乐</option>
<option value="/doc/systemd/">Systemd 入门教程：命令篇</option>
<option value="/apidoc/jquery/">jQuery文档</option>
<option value="/knownjson/aboutjsonp/">什么是jsonp</option>
<option value="/doc/AndroidManifest/">Android权限大全</option>
<option value="/knownjson/aboutjson/">什么是JSON</option>
<option value="/knownjson/demo/">举个栗子</option>
<option value="/knownjson/webInterface/">JSON API免费接口</option>
<option value="/knownjson/regexJiaocheng/">正则表达式30分钟入门教程</option>
<option value="/knownjson/httpstate/">HTTP状态码查询</option>
<option value="/doc/httpcontent/">HTTP Content对照表</option>
<option value="/doc/ascii/">ASCII码对照表</option>
<option value="/doc/port/">常用端口解释</option>
<option value="/knownjson/webInterface/">免费JSON接口</option>
<option value="/soft/">常用软件下载</option>
<option value="/other/blogs/">Blogs</option>
<option value="/knownjson/msg/">留言</option>
<option value="/other/whatisnew/">更新日志</option>
<option value="/other/ads/">广告招租</option>
<option value="/demo/sinaweather/">新浪天气API接口测试用例</option>
</select>
</div>
</div>
</nav>
<div class="container">
<ul class="nav nav-tabs tab-after custom-tab">
<li class="">
<a class="cursor-pointer" href="http://www.bejson.com/doc/systemd/" data-recent="yes">
Systemd 入门教程：命令篇 </a>
</li>
<li class="">
<a class="cursor-pointer" href="http://www.bejson.com/apidoc/jquery/" data-recent="yes">
jQuery文档 </a>
</li>
<li class="">
<a class="cursor-pointer" href="https://v3.bootcss.com/components/" data-recent="yes" target="_blank">
Bootstrap文档 </a>
</li>
<li class="">
<a class="cursor-pointer" href="http://www.bejson.com/doc/vuejs/" data-recent="yes">
VueJs文档 </a>
</li>
<li class="">
 <a class="cursor-pointer" href="http://www.bejson.com/doc/openqq/" data-recent="yes">
腾讯开发平台 </a>
</li>
<li class="">
<a class="cursor-pointer" href="http://www.bejson.com/knownjson/aboutjsonp/" data-recent="yes">
什么是jsonp </a>
</li>
<li class="">
<a class="cursor-pointer" href="https://developers.weixin.qq.com/doc/offiaccount/Getting_Started/Overview.html" data-recent="yes" target="_blank">
微信公众平台开发文档 </a>
</li>
<li class="">
<a class="cursor-pointer" href="https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html" data-recent="yes" target="_blank">
微信JSSDK开发文档 </a>
</li>
<li class="">
<a class="cursor-pointer" href="http://www.bejson.com/doc/payweixin/" data-recent="yes">
微信支付开发文档 </a>
</li>
<li class="">
<a class="cursor-pointer" href="http://www.bejson.com/doc/payweixinsl/" data-recent="yes">
微信支付服务商文档 </a>
</li>
<li class="">
<a class="cursor-pointer" href="https://developers.weixin.qq.com/miniprogram/dev/api/" data-recent="yes" target="_blank">
微信小程序开发文档 </a>
</li>
<li class="">
<a class="cursor-pointer" href="http://www.bejson.com/doc/taobao/" data-recent="yes">
淘宝开发文档 </a>
</li>
<li class="">
<a class="cursor-pointer" href="http://www.bejson.com/doc/alipay/" data-recent="yes">
支付宝开发文档 </a>
</li>
<li class="">
<a class="cursor-pointer" href="http://www.bejson.com/doc/wisdomstores/" data-recent="yes">
支付宝智慧门店文档 </a>
</li>
<li class="">
<a class="cursor-pointer" href="https://opendocs.alipay.com/open/399" data-recent="yes" target="_blank">
支付宝开发商文档 </a>
</li>
<li class="">
<a class="cursor-pointer" href="http://www.bejson.com/doc/AndroidManifest/" data-recent="yes">
Android权限大全 </a>
</li>
<li class="">
<a class="cursor-pointer" href="http://www.bejson.com/knownjson/aboutjson/" data-recent="yes">
什么是JSON </a>
</li>
<li class="">
<a class="cursor-pointer" href="http://www.bejson.com/knownjson/demo/" data-recent="yes">
举个栗子 </a>
</li>
<li class="">
<a class="cursor-pointer" href="http://www.bejson.com/knownjson/webInterface/" data-recent="yes">
JSON API免费接口 </a>
</li>
<li class="active">
<a class="cursor-pointer" href="index.html" data-recent="yes">
正则表达式30分钟入门教程 </a>
</li>
<li class="">
<a class="cursor-pointer" href="http://www.bejson.com/knownjson/httpstate/" data-recent="yes">
HTTP状态码查询 </a>
</li>
<li class="">
<a class="cursor-pointer" href="http://www.bejson.com/doc/httpcontent/" data-recent="yes">
HTTP Content对照表 </a>
</li>
<li class="">
<a class="cursor-pointer" href="http://www.bejson.com/doc/ascii/" data-recent="yes">
ASCII码对照表 </a>
</li>
<li class="">
<a class="cursor-pointer" href="http://www.bejson.com/doc/port/" data-recent="yes">
常用端口解释 </a>
 </li>
<li class="dropdown" style="display: none" id="dropdown13" data-target="#dropdown13">
<a class="dropdown-toggle clear-after" data-toggle="dropdown">更多 <span class="caret"></span></a>
<ul class="dropdown-menu">
</ul>
</li>
</ul>
</div>
<script>
    var _hmt = _hmt || [];
    (function() {
        var hm = document.createElement("script");
        hm.src = "https://hm.baidu.com/hm.js?4aa52dbe1c3f25aa133d68ee023b1c61";
        var s = document.getElementsByTagName("script")[0];
        s.parentNode.insertBefore(hm, s);
    })();
</script>
<div class="container" style="margin-top: 50px">
<div>
<script>wexridvdrpkx('UNDER_CATEGORY');</script>
</div>
<h1 class="font-18 v-big-margin no-padding-v">正则表达式30分钟入门教程</h1>













<div class="t-big-margin">
<div id='write' class='is-node'><h1><a name="font-color-red--font正则表达式30分钟入门教程" class="md-header-anchor"></a><font color='red'><span> </span></font><span>正则表达式30分钟入门教程</span></h1>
<h2><a name="本文目标" class="md-header-anchor"></a><span>本文目标</span></h2>
<p><span>30分钟内让你明白正则表达式是什么，并对它有一些基本的了解，让你可以在自己的程序或网页里使用它。</span></p>
<div class='md-toc' mdtype='toc'><p class="md-toc-content" role="list"><span role="listitem" class="md-toc-item md-toc-h1" data-ref="n0"><a class="md-toc-inner" href="index.html#font-color-red--font正则表达式30分钟入门教程"> 正则表达式30分钟入门教程</a></span><span role="listitem" class="md-toc-item md-toc-h2" data-ref="n2"><a class="md-toc-inner" href="index.html#本文目标">本文目标</a></span><span role="listitem" class="md-toc-item md-toc-h2" data-ref="n5"><a class="md-toc-inner" href="index.html#如何使用本教程">如何使用本教程</a></span><span role="listitem" class="md-toc-item md-toc-h2" data-ref="n12"><a class="md-toc-inner" href="index.html#正则表达式到底是什么东西">正则表达式到底是什么东西？</a></span><span role="listitem" class="md-toc-item md-toc-h2" data-ref="n1439"><a class="md-toc-inner" href="index.html#入门">入门</a></span><span role="listitem" class="md-toc-item md-toc-h2" data-ref="n33"><a class="md-toc-inner" href="index.html#测试正则表达式">测试正则表达式 </a></span><span role="listitem" class="md-toc-item md-toc-h2" data-ref="n1415"><a class="md-toc-inner" href="index.html#元字符">元字符</a></span><span role="listitem" class="md-toc-item md-toc-h2" data-ref="n86"><a class="md-toc-inner" href="index.html#字符转义">字符转义</a></span><span role="listitem" class="md-toc-item md-toc-h2" data-ref="n89"><a class="md-toc-inner" href="index.html#重复">重复</a></span><span role="listitem" class="md-toc-item md-toc-h2" data-ref="n1423"><a class="md-toc-inner" href="index.html#字符类">字符类</a></span><span role="listitem" class="md-toc-item md-toc-h2" data-ref="n1424"><a class="md-toc-inner" href="index.html#分枝条件">分枝条件</a></span><span role="listitem" class="md-toc-item md-toc-h2" data-ref="n1425"><a class="md-toc-inner" href="index.html#分组">分组</a></span><span role="listitem" class="md-toc-item md-toc-h2" data-ref="n1426"><a class="md-toc-inner" href="index.html#反义">反义</a></span><span role="listitem" class="md-toc-item md-toc-h2" data-ref="n1427"><a class="md-toc-inner" href="index.html#后向引用">后向引用</a></span><span role="listitem" class="md-toc-item md-toc-h2" data-ref="n1428"><a class="md-toc-inner" href="index.html#零宽断言">零宽断言</a></span><span role="listitem" class="md-toc-item md-toc-h2" data-ref="n1429"><a class="md-toc-inner" href="index.html#负向零宽断言">负向零宽断言</a></span><span role="listitem" class="md-toc-item md-toc-h2" data-ref="n1430"><a class="md-toc-inner" href="index.html#注释">注释</a></span><span role="listitem" class="md-toc-item md-toc-h2" data-ref="n1431"><a class="md-toc-inner" href="index.html#贪婪与懒惰">贪婪与懒惰</a></span><span role="listitem" class="md-toc-item md-toc-h2" data-ref="n1432"><a class="md-toc-inner" href="index.html#处理选项">处理选项</a></span><span role="listitem" class="md-toc-item md-toc-h2" data-ref="n1433"><a class="md-toc-inner" href="index.html#平衡组递归匹配">平衡组/递归匹配</a></span><span role="listitem" class="md-toc-item md-toc-h2" data-ref="n1434"><a class="md-toc-inner" href="index.html#还有些什么东西没提到">还有些什么东西没提到</a></span><span role="listitem" class="md-toc-item md-toc-h2" data-ref="n1435"><a class="md-toc-inner" href="index.html#联系作者">联系作者</a></span><span role="listitem" class="md-toc-item md-toc-h2" data-ref="n1436"><a class="md-toc-inner" href="index.html#网上的资源及本文参考文献">网上的资源及本文参考文献</a></span>
</p></div>
<h2><a name="如何使用本教程" class="md-header-anchor"></a><span>如何使用本教程</span></h2>
<p><span> </span><span>别被下面那些复杂的表达式吓倒，只要跟着我一步一步来，你会发现正则表达式其实并没有你想像中的那么困难。当然，如果你看完了这篇教程之后，发现自己明白了很多，却又几乎什么都记不得，那也是很正常的——我认为，没接触过正则表达式的人在看完这篇教程后，能把提到过的语法记住80%以上的可能性为零。这里只是让你明白基本的原理，以后你还需要多练习，多使用，才能熟练掌握正则表达式。</span>
</p>
<blockquote><p>
<span>最重要的是——请给我</span><em><span>30分钟</span></em><span>，如果你没有使用正则表达式的经验，请不要试图在30</span><em><span>秒</span></em><span>内入门——除非你是超人 :)</span>
</p></blockquote>
<p><span> </span><span>除了作为入门教程之外，本文还试图成为可以在日常工作中使用的正则表达式语法参考手册。就作者本人的经历来说，这个目标还是完成得不错的——你看，我自己也没能把所有的东西记下来，不是吗？</span>
</p>
<p><span> </span><a href='http://deerchao.net/tutorials/regex/regex.htm'><span>清除格式</span></a><span> 文本格式约定：</span><strong><span>专业术语</span></strong><span> </span><font color='red'><span>元字符/语法格式</span></font><span> </span><font color='red'><span>正则表达式</span></font><span> </span><font color='red'><span>正则表达式中的一部分(用于分析)</span></font><span> </span><em><span>对其进行匹配的源字符串</span></em><span> </span><u><span>对正则表达式或其中一部分的说明</span></u><span>。</span>
</p>
<p><span> </span><a href='http://deerchao.net/tutorials/regex/regex.htm'><span>隐藏边注</span></a><span> 本文右边有一些注释，主要是用来提供一些相关信息，或者给没有程序员背景的读者解释一些基本概念，通常可以忽略。</span>
</p>
<h2><a name="正则表达式到底是什么东西" class="md-header-anchor"></a><span>正则表达式到底是什么东西？</span></h2>
<p><span> </span><span>在编写处理字符串的程序或网页时，经常会有查找符合某些复杂规则的字符串的需要。</span><strong><span>正则表达式</span></strong><span>就是用于描述这些规则的工具。换句话说，正则表达式就是记录文本规则的代码。</span>
</p>
<p>
<span> </span><span>很可能你使用过Windows/Dos下用于文件查找的</span><strong><span>通配符(</span><code>wildcard</code><span>)</span></strong><span>，也就是 </span><font color='red'><span>*</span><span> </span></font><span>和 </span><font color='red'><span>?</span></font><span> 。如果你想查找某个目录下的所有的Word文档的话，你会搜索 </span><font color='red'><span> </span><span>*</span><span>.doc </span></font><span>。在这里，</span><font color='red'><span>*</span><span> </span></font><span>会被解释成任意的字符串。和通配符类似，正则表达式也是用来进行文本匹配的工具，只不过比起通配符，它能更精确地描述你的需求——当然，代价就是更复杂——比如你可以编写一个正则表达式，用来查找</span><u><span>所有以0开头，后面跟着2-3个数字，然后是一个连字号“-”，最后是7或8位数字的字符串</span></u><span>(像</span><em><span>010-12345678</span></em><span>或</span><em><span>0376-7654321</span></em><span>)。 </span>
</p>
<blockquote><p>
<strong><span>字符</span></strong><span>是计算机软件处理文字时最基本的单位，可能是字母，数字，标点符号，空格，换行符，汉字等等。</span><strong><span>字符串</span></strong><span>是0个或更多个字符的序列。</span><strong><span>文本</span></strong><span>也就是文字，字符串。说某个字符串</span><strong><span>匹配</span></strong><span>某个正则表达式，通常是指这个字符串里有一部分（或几部分分别）能满足表达式给出的条件。</span>
</p></blockquote>
<p>&nbsp;</p>
<h2><a name="入门" class="md-header-anchor"></a><span>入门</span></h2>
<p><span> </span><span>学习正则表达式的最好方法是从例子开始，理解例子之后再自己对例子进行修改，实验。下面给出了不少简单的例子，并对它们作了详细的说明。</span></p>
<p><span> </span><span>假设你在一篇英文小说里查找</span><u><span>hi</span></u><span>，你可以使用正则表达式</span><font color='red'><span> hi</span></font><span>。</span></p>
<p><span> </span><span>这几乎是最简单的正则表达式了，它可以精确匹配这样的字符串：</span><u><span>由两个字符组成，前一个字符是h,后一个是i</span></u><span>。通常，处理正则表达式的工具会提供一个忽略大小写的选项，如果选中了这个选项，它可以匹配</span><em><span>hi</span></em><span>,</span><em><span>HI</span></em><span>,</span><em><span>Hi</span></em><span>,</span><em><span>hI</span></em><span>这四种情况中的任意一种。</span>
</p>
<p>
<span> </span><span>不幸的是，很多单词里包含</span><em><span>hi</span></em><span>这两个连续的字符，比如</span><em><span>him</span></em><span>,</span><em><span>history</span></em><span>,</span><em><span>high</span></em><span>等等。用 </span><font color='red'><span>hi</span></font><span> 来查找的话，这里边的</span><em><span>hi</span></em><span>也会被找出来。如果要</span><u><span>精确地查找hi这个单词</span></u><span>的话，我们应该使用 </span><font color='red'><span>\bhi\b</span></font><span>。</span></p>
<p><span> </span><font color='red'><span>\b</span></font><span>是正则表达式规定的一个特殊代码（好吧，某些人叫它</span><strong><span>元字符，</span><code>metacharacter</code></strong><span>），代表着</span><u><span>单词的开头或结尾，也就是单词的分界处</span></u><span>。虽然通常英文的单词是由空格，标点符号或者换行来分隔的，但是 </span><font color='red'><span>\b</span></font><span> 并不匹配这些单词分隔字符中的任何一个，它</span><strong><span>只匹配一个位置</span></strong><span>。</span>
</p>
<p><span> </span><span>假如你要找的是</span><u><span>hi后面不远处跟着一个Lucy</span></u><span>，你应该用 </span><font color='red'><span> \bhi\b.*\bLucy\b</span></font><span>。</span>
</p>
<blockquote><p><span>如果需要更精确的说法,</span><font color='red'><span> \b </span></font><span>匹配这样的位置：它的前一个字符和后一个字符不全是(一个是,一个不是或不存在) </span><font color='red'><span>\w</span></font><span>。 </span></p></blockquote>
<p><span> </span><span>这里，.是另一个元字符，匹配</span><u><span>除了换行符以外的任意字符</span></u><span>。*同样是元字符，不过它代表的不是字符，也不是位置，而是数量——它指定</span><span>*</span><u><span>前边的内容可以连续重复使用任意次以使整个表达式得到匹配</span></u><span>。因此，.</span><span>*</span><u><span>连在一起就意味着任意数量的不包含换行的字符</span></u><span>。现在 </span><font color='red'><span>\bhi\b.</span><span>*</span><span>\bLucy\b</span></font><span> 的意思就很明显了：</span><u><span>先是一个单词hi,然后是任意个任意字符(但不能是换行)，最后是Lucy这个单词</span></u><span>。</span>
</p>
<p><span> </span><span>如果同时使用其它元字符，我们就能构造出功能更强大的正则表达式。比如下面这个例子：</span></p>
<p><span> </span><font color='red'><span>0\d\d-\d\d\d\d\d\d\d\d</span></font><span>匹配这样的字符串：</span><u><span>以0开头，然后是两个数字，然后是一个连字号“-”，最后是8个数字</span></u><span>(也就是中国的电话号码。当然，这个例子只能匹配区号为3位的情形)。</span>
</p>
<blockquote><p><span>换行符就是&#39;\n&#39;,ASCII编码为10(十六进制</span><code>0x0A</code><span>)的字符。</span></p></blockquote>
<p><span>这里的</span><font color='red'><span>\d</span></font><span>是个新的元字符，匹配</span><u><span>一位数字(0，或1，或2，或……</span></u><span>)。-不是元字符，只匹配它本身——连字符(或者减号，或者中横线，或者随你怎么称呼它)。</span>
</p>
<p><span> </span><span>为了避免那么多烦人的重复，我们也可以这样写这个表达式：</span><font color='red'><span>0\d{2}-\d{8}</span></font><span>。 这里</span><font color='red'><span>\d</span></font><span>后面的{</span><font color='red'><span> 2</span></font><span> }({ </span><font color='red'><span>8</span></font><span> })的意思是前面</span><font color='red'><span> \d </span></font><u><span>必须连续重复匹配2次(8次)</span></u><span>。</span>
</p>
<p>&nbsp;</p>
<h2><a name="测试正则表达式" class="md-header-anchor"></a><span>测试正则表达式 </span></h2>
<p><span> </span><span>如果你不觉得正则表达式很难读写的话，要么你是一个天才，要么，你不是地球人。正则表达式的语法很令人头疼，即使对经常使用它的人来说也是如此。由于难于读写，容易出错，所以找一种工具对正则表达式进行测试是很有必要的。</span>
</p>
<blockquote><p><span>其它可用的测试工具:</span></p>
<ul>
<li><a href='http://www.regexbuddy.com/'><span>RegexBuddy</span></a></li>
<li><a href='http://regexpal.com/'><span>Javascript正则表达式在线测试工具</span></a></li>
</ul>
</blockquote>
<p>
<span> </span><span>不同的环境下正则表达式的一些细节是不相同的，本教程介绍的是微软 .Net Framework 4.0 下正则表达式的行为，所以，我向你推荐我编写的.Net下的工具 </span><a href='http://deerchao.net/tools/regex_tester/index.htm'><span>正则表达式测试器</span></a><span>。请参考该页面的说明来安装和运行该软件。</span>
</p>
<p><span> </span><span>下面是Regex Tester运行时的截图：</span></p>
<p><img src="D:\Users\Administrator\Desktop\regex_tester.png" referrerpolicy="no-referrer" alt="regex_tester"></p>
<p>&nbsp;</p>
<h2><a name="元字符" class="md-header-anchor"></a><span>元字符</span></h2>
<p><span> </span><span>现在你已经知道几个很有用的元字符了，如 </span><font color='red'><span>\b</span></font><span>, </span><font color='blue'><span>. </span></font><span>, </span><font color='re'><span>*</span></font><span>, 还有</span><font color='red'><span>\d</span></font><span>.正则表达式里还有更多的元字符，比如</span><font color='red'><span>\s</span></font><span>匹配</span><u><span>任意的空白符，包括空格，制表符(Tab)，换行符，中文全角空格等</span></u><span>。</span><font color='red'><span>\w </span></font><span>匹配</span><u><span>字母或数字或下划线或汉字等</span></u><span>。</span></p>
<p><span> </span><span>下面来看看更多的例子：</span></p>
<p><span> </span><font color='red'><span> \ba\w</span><span>*</span><span>\b </span></font><span>匹配以字母 </span><font color='red'><span> a </span></font><span>开头的单词——先是某个单词开始处(</span><font color='red'><span> \b </span></font><span>)，然后是字母</span><font color='red'><span> a </span></font><span>,然后是任意数量的字母或数字(</span><font color='red'><span> \w</span><span>*</span><span> </span></font><span>)，最后是单词结束处(</span><font color='red'><span> \b </span></font><span>)。 </span></p>
<blockquote><p><span>对中文/汉字的特殊处理是由.Net提供的正则表达式引擎支持的，其它环境下的具体情况请查看相关文档。 </span></p></blockquote>
<blockquote><p><span>好吧，现在我们说说正则表达式里的单词是什么意思吧：就是不少于一个的连续的\w。不错，这与学习英文时要背的成千上万个同名的东西的确关系不大 :)</span></p></blockquote>
<p><span> </span><font color='red'><span>\d+ </span></font><span>匹配</span><u><span>1个或更多连续的数字</span></u><span>。这里的</span><font color='red'><span> + </span></font><span>是和</span><font color='red'><span> </span><span>*</span></font><span>类似的元字符，不同的是</span><font color='red'><span> </span><span>*</span><span> </span></font><span>匹配重复任意次(可能是0次)，而</span><font color='red'><span> + </span></font><span>则匹配</span><u><span>重复1次或更多次</span></u><span>。</span>
</p>
<p><span> </span><font color='red'><span> \b\w{6}\b </span></font><span> 匹配</span><u><span>刚好6个字符的单词</span></u><span>。</span></p>
<figure>
<table>
<thead>
<tr>
<th><strong><span>代码</span></strong></th>
<th><strong><span>说明</span></strong></th>
</tr>
</thead>
<tbody>
<tr>
<td><span>.</span></td>
<td><span>匹配除换行符以外的任意字符</span></td>
</tr>
<tr>
<td><span>\w</span></td>
<td><span>匹配字母或数字或下划线或汉字</span></td>
</tr>
<tr>
<td><span>\s</span></td>
<td><span>匹配任意的空白符</span></td>
</tr>
<tr>
<td><span>\d</span></td>
<td><span>匹配数字</span></td>
</tr>
<tr>
<td><span>\b</span></td>
<td><span>匹配单词的开始或结束</span></td>
</tr>
<tr>
<td><span>^</span></td>
<td><span>匹配字符串的开始</span></td>
</tr>
<tr>
<td><span>$</span></td>
<td><span>匹配字符串的结束</span></td>
</tr>
</tbody>
</table>
</figure>
<p><span> </span><span>元字符 </span><font color='red'><span>^</span></font><span>（和数字6在同一个键位上的符号）和</span><font color='red'><span> $ </span></font><span>都匹配一个位置，这和</span><font color='red'><span> \b </span></font><span>有点类似。</span><font color='red'><span> ^</span></font><span> 匹配你要用来查找的字符串的开头，</span><font color='red'><span> $ </span></font><span>匹配结尾。这两个代码在验证输入的内容时非常有用，比如一个网站如果要求你填写的QQ号必须为5位到12位数字时，可以使用：</span><font color='red'><span> ^\d{5,12}$</span></font><span>。</span></p>
<p><span> </span><span>这里的{</span><font color='red'><span> 5,12</span></font><span>} 和前面介绍过的{</span><font color='red'><span> 2 </span></font><span>}是类似的，只不过{</span><font color='red'><span> 2 </span></font><span>}匹配</span><u><span>只能不多不少重复2次</span></u><span>，{</span><font color='red'><span> 5,12</span></font><span>} 则是</span><u><span>重复的次数不能少于5次，不能多于12次</span></u><span>，否则都不匹配。</span>
</p>
<blockquote><p><span>正则表达式引擎通常会提供一个“测试指定的字符串是否匹配一个正则表达式”的方法，如JavaScript里的</span><code>RegExp.test()</code><span>方法或.NET里的Regex.IsMatch()方法。这里的匹配是指是字符串里有没有符合表达式规则的部分。如果不使用</span><font color='red'><span> ^ </span></font><span>和</span><font color='red'><span> $ </span></font><span>的话，对于</span><font color='red'><span> \d{5,12} </span></font><span>而言，使用这样的方法就只能保证字符串里包含</span><u><span>5到12连续位数字</span></u><span>，而不是整个字符串就是5到12位数字。</span>
</p></blockquote>
<p><span> </span><span>因为使用了</span><font color='red'><span> ^ </span></font><span>和</span><font color='red'><span> $</span></font><span>，所以输入的整个字符串都要用来和</span><font color='red'><span> \d{5,12} </span></font><span>来匹配，也就是说整个输入必须是</span><u><span>5到12个数字</span></u><span>，因此如果输入的QQ号能匹配这个正则表达式的话，那就符合要求了。</span>
</p>
<p><span> </span><span>和忽略大小写的选项类似，有些正则表达式处理工具还有一个处理多行的选项。如果选中了这个选项，</span><font color='red'><span> ^ </span></font><span>和</span><font color='red'><span> $</span></font><span>的意义就变成了</span><u><span>匹配行的开始处和结束处</span></u><span>。</span></p>
<p>&nbsp;</p>
<h2><a name="字符转义" class="md-header-anchor"></a><span>字符转义</span></h2>
<p>
<span> </span><span>如果你想查找元字符本身的话，比如你查找.,或者*,就出现了问题：你没办法指定它们，因为它们会被解释成别的意思。这时你就得使用\来取消这些字符的特殊意义。因此，你应该使用</span><font color='red'><span> . </span></font><span>和</span><font color='red'><span> </span><span>\</span><span>*</span><span> </span></font><span>。当然，要查找\本身，你也得用</span><font color='red'><span> </span><span>\</span><span>\</span><span> </span></font><span>.</span></p>
<p><span> </span><span>例如：</span><font color='red'><span> unibetter</span><span>\</span><span>.com </span></font><span>匹配 </span><code>unibetter.com</code><span>，</span><font color='red'><span> &gt;C:</span><span>\</span><span>Windows </span></font><span>匹配</span><code>C:\Windows</code><span>。</span>
</p>
<p>&nbsp;</p>
<h2><a name="重复" class="md-header-anchor"></a><span>重复</span></h2>
<p><span> </span><span>你已经看过了前面的</span><font color='red'><span> </span><span>*</span></font><span>,</span><font color='red'><span> + </span></font><span>,</span><font color='red'><span>{2} </span></font><span>,</span><font color='red'><span> {2,5} </span></font><span>这几个匹配重复的方式了。下面是正则表达式中所有的限定符(指定数量的代码，例如*,{5,12}等)：</span>
</p>
<figure>
<table>
<thead>
<tr>
<th><strong><span>代码/语法</span></strong></th>
<th><strong><span>说明</span></strong></th>
</tr>
</thead>
<tbody>
<tr>
<td><span>*</span></td>
<td><span>重复零次或更多次</span></td>
</tr>
<tr>
<td><span>+</span></td>
<td><span>重复一次或更多次</span></td>
</tr>
<tr>
<td><span>?</span></td>
<td><span>重复零次或一次</span></td>
</tr>
<tr>
<td><span>{n}</span></td>
<td><span>重复n次</span></td>
</tr>
<tr>
<td><span>{n,}</span></td>
<td><span>重复n次或更多次</span></td>
</tr>
<tr>
<td><span>{m,m}</span></td>
<td><span>重复n到m次</span></td>
</tr>
</tbody>
</table>
</figure>
<p><span> </span><span>下面是一些使用重复的例子：</span></p>
<p><span> </span><font color='red'><span> Windows\d+</span></font><span>匹配</span><u><span>Windows后面跟1个或更多数字</span></u></p>
<p><span> </span><font color='red'><span> ^\w+</span></font><span>匹配</span><u><span>一行的第一个单词(或整个字符串的第一个单词，具体匹配哪个意思得看选项设置)</span></u>
</p>
<p>&nbsp;</p>
<h2><a name="字符类" class="md-header-anchor"></a><span>字符类</span></h2>
<p><span> </span><span>要想查找数字，字母或数字，空白是很简单的，因为已经有了对应这些字符</span><span>*</span><span>*</span><span>的元字符，但是如果你想匹配没有预定义元字符的字符</span><span>*</span><span>*</span><span>(比如元音字母a,e,i,o,u),应该怎么办？</span>
</p>
<p><span> </span><span>很简单，你只需要在方括号里列出它们就行了，像</span><font color='red'><span> [aeiou]</span></font><span>就匹配</span><u><span>任何一个英文元音字母</span></u><span>，</span><font color='red'><span> [.?!]</span></font><span> 匹配</span><u><span>标点符号(.或?或!)</span></u><span>。</span></p>
<p><span> </span><span>我们也可以轻松地指定一个字符</span><strong><span>范围</span></strong><span>，像</span><font color='red'><span> [0-9] </span></font><span>代表的含意与</span><font color='red'><span> \d </span></font><span>就是完全一致的：</span><u><span>一位数字</span></u><span>；同理</span><font color='red'><span> [a-z0-9A-Z_] </span></font><span>也完全等同于</span><font color='red'><span> \w </span></font><span>（如果只考虑英文的话）。</span></p>
<p><span> </span><span>下面是一个更复杂的表达式：</span><font color='red'><span> </span><span>\</span><span>(?0\d{2}[) -]?\d{8} </span></font><span>。</span>
</p>
<p>
<span> </span><span>这个表达式可以匹配</span><u><span>几种格式的电话号码</span></u><span>，像</span><em><span>(010)88886666</span></em><span>，或</span><em><span>022-22334455</span></em><span>，或</span><em><span>02912345678</span></em><span>等。我们对它进行一些分析吧：首先是一个转义字符</span><font color='red'><span> </span><span>\</span><span> </span></font><span>(,它能出现0次或1次(</span><font color='red'><span> ? </span></font><span>),然后是一个</span><font color='red'><span> 0 </span></font><span>，后面跟着2个数字(</span><font color='red'><span> \d{2} </span></font><span>)，然后是)或-或</span><font color='red'><span> 空格 </span></font><span>中的一个，它出现1次或不出现(</span><font color='red'><span> ? </span></font><span>)，最后是8个数字(</span><font color='red'><span> \d{8} </span></font><span>)。</span></p>
<blockquote><p><span>“(”和“)”也是元字符，后面的</span><a href='index.html#grouping'><span>分组节</span></a><span>里会提到，所以在这里需要使用</span><a href='index.html#escape'><span>转义</span></a><span>。</span></p>
</blockquote>
<p>&nbsp;</p>
<h2><a name="分枝条件" class="md-header-anchor"></a><span>分枝条件</span></h2>
<p><span> </span><span>不幸的是，刚才那个表达式也能匹配</span><em><span>010)12345678</span></em><span>或</span><em><span>(022-87654321</span></em><span>这样的“不正确”的格式。要解决这个问题，我们需要用到</span><strong><span>分枝条件</span></strong><span>。正则表达式里的</span><strong><span>分枝条件</span></strong><span>指的是有几种规则，如果满足其中任意一种规则都应该当成匹配，具体方法是用|把不同的规则分隔开。听不明白？没关系，看例子：</span>
</p>
<p><span> </span><font color='red'><span> 0\d{2}-\d{8}|0\d{3}-\d{7} </span></font><span>这个表达式能 </span><u><span>匹配两种以连字号分隔的电话号码：一种是三位区号，8位本地号(如010-12345678)，一种是4位区号，7位本地号(0376-2233445)</span></u><span>。</span>
</p>
<p><span> </span><font color='red'><span> </span><span>\</span><span>(0\d{2}</span><span>)</span><span>[- ]?\d{8}|0\d{2}[- ]?\d{8} </span></font><span>这个表达式 </span><u><span>匹配3位区号的电话号码，其中区号可以用小括号括起来，也可以不用，区号与本地号间可以用连字号或空格间隔，也可以没有间隔</span></u><span>。你可以试试用分枝条件把这个表达式扩展成也支持4位区号的。</span>
</p>
<p><span> </span><font color='red'><span> </span><span>\</span><span>d{5}-\d{4}|\d{5} </span></font><span>这个表达式用于匹配美国的邮政编码。美国邮编的规则是5位数字，或者用连字号间隔的9位数字。之所以要给出这个例子是因为它能说明一个问题：</span><strong><span>使用分枝条件时，要注意各个条件的顺序</span></strong><span>。如果你把它改成</span><font color='red'><span> </span><span>\</span><span>d{5}|\d{5}-\d{4} </span></font><span>的话，那么就只会匹配5位的邮编(以及9位邮编的前5位)。原因是匹配分枝条件时，将会从左到右地测试每个条件，如果满足了某个分枝的话，就不会去再管其它的条件了。</span>
</p>
<p>&nbsp;</p>
<h2><a name="分组" class="md-header-anchor"></a><span>分组</span></h2>
<p>
<span> </span><span>我们已经提到了怎么重复单个字符（直接在字符后面加上限定符就行了）；但如果想要重复多个字符又该怎么办？你可以用小括号来指定</span><strong><span>子表达式</span></strong><span>(也叫做</span><strong><span>分组</span></strong><span>)，然后你就可以指定这个子表达式的重复次数了，你也可以对子表达式进行其它一些操作(后面会有介绍)。</span>
</p>
<p><span> </span><font color='red'><span> (\d{1,3}</span><span>.</span><span>){3}\d{1,3} </span></font><span>是一个简单的</span><u><code>IP</code><span>地址匹配</span></u><span>表达式。要理解这个表达式，请按下列顺序分析它：</span><font color='red'><span> \d{1,3} </span></font><u><span>匹配1到3位的数字</span></u><span>，</span><font color='red'><span> (\d{1,3}</span><span>\</span><span>.){3} </span></font><span>匹配</span><u><span>三位数字加上一个英文句号(这个整体也就是这个</span><strong><span>分组</span></strong><span>)重复3次</span></u><span>，最后再加上</span><u><span>一个一到三位的数字(</span><font color='red'><span> </span><span>\</span><span>d{1,3}  </span></font><span>)</span></u><span>。</span></p>
<p><span> </span><span>不幸的是，它也将匹配</span><em><span>256.300.888.999</span></em><span>这种不可能存在的IP地址。如果能使用算术比较的话，或许能简单地解决这个问题，但是正则表达式中并不提供关于数学的任何功能，所以只能使用冗长的分组，选择，字符类来描述一个正确的</span><code>IP</code><span>地址：</span><font color='red'><span> ((2[0-4]\d|25[0-5]|[01]?\d\d?)</span><span>\</span><span>.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?) </span></font><span>。</span>
</p>
<blockquote><p><span>IP 地址中每个数字都不能大于255，大家千万不要被《24》第三季的编剧给忽悠了……</span><span> </span></p></blockquote>
<p><span> </span><span>理解这个表达式的关键是理解</span><font color='red'><span> 2[0-4]\d|25[0-5]|[01]?\d\d? </span></font><span>，这里我就不细说了，你自己应该能分析得出来它的意义。</span></p>
<p>&nbsp;</p>
<h2><a name="反义" class="md-header-anchor"></a><span>反义</span></h2>
<p>
<span> </span><span>有时需要查找不属于某个能简单定义的字符类的字符。比如想查找除了数字以外，其它任意字符都行的情况，这时需要用到</span><strong><span>反义</span></strong><span>：</span>
</p>
<figure>
<table>
<thead>
<tr>
<th><strong><span>代码/语法</span></strong></th>
<th><strong><span>说明</span></strong></th>
</tr>
</thead>
<tbody>
<tr>
<td><span>\W</span></td>
<td><span>匹配任意不是字母，数字，下划线，汉字的字符</span></td>
</tr>
<tr>
<td><span>\S</span></td>
<td><span>匹配任意不是空白符的字符</span></td>
</tr>
<tr>
<td><span>\D</span></td>
<td><span>匹配任意非数字的字符</span></td>
</tr>
<tr>
<td><span>\B</span></td>
<td><span>匹配不是单词开头或结束的位置</span></td>
</tr>
<tr>
<td><span>[^x]</span></td>
<td><span>匹配除了x以外的任意字符</span></td>
</tr>
<tr>
<td><span>[^aeiou]</span></td>
<td><span>匹配除了aeiou这几个字母以外的任意字符</span></td>
</tr>
</tbody>
</table>
</figure>
<p><span>例子：</span><font color='red'><span>\S+ </span></font><span> 匹配不包含空白符的字符串。</span></p>
<p><span> </span><font color='red'><span>&lt;a[^&gt;</span><span>]</span><span>+&gt; </span></font><span>匹配用尖括号括起来的以a开头的字符串。</span>
</p>
<p>&nbsp;</p>
<h2><a name="后向引用" class="md-header-anchor"></a><span>后向引用</span></h2>
<p><span> </span><span>使用小括号指定一个子表达式后，</span><strong><span>匹配这个子表达式的文本</span></strong><span>(也就是此分组捕获的内容)可以在表达式或其它程序中作进一步的处理。默认情况下，每个分组会自动拥有一个</span><strong><span>组号</span></strong><span>，规则是：从左向右，以分组的左括号为标志，第一个出现的分组的组号为1，第二个为2，以此类推。</span>
</p>
<p><span> </span><strong><span>后向引用</span></strong><span>用于重复搜索前面某个分组匹配的文本。例如，</span><font color='red'><span>\1 </span></font><span> 代表</span><u><span>分组1匹配的文本</span></u><span>。难以理解？请看示例：</span>
</p>
<p><span> </span><font color='red'><span>\b(\w+)\b\s+\1\b </span></font><span> 可以用来匹配重复的单词，像</span><em><span>go go</span></em><span>, 或者</span><em><span>kitty kitty</span></em><span>。这个表达式首先是</span><u><span>一个单词</span></u><span>，也就是</span><u><span>单词开始处和结束处之间的多于一个的字母或数字</span></u><span> </span><font color='red'><span>(\b(\w+)\b) </span></font><span>，这个单词会被捕获到编号为1的分组中，然后是</span><u><span>1个或几个空白符</span></u><span>( </span><font color='red'><span>\s+ </span></font><span>)，最后是</span><u><span>分组1中捕获的内容（也就是前面匹配的那个单词）( </span><font color='red'><span>\1 </span></font><span>)</span></u><span>。</span></p>
<blockquote><p><span>呃……其实,组号分配还不像我刚说得那么简单：</span></p>
<ul>
<li><span>分组0对应整个正则表达式</span></li>
<li><span>实际上组号分配过程是要从左向右扫描两遍的：第一遍只给未命名组分配，第二遍只给命名组分配－－因此所有命名组的组号都大于未命名的组号</span></li>
<li><span>你可以使用(?:exp)这样的语法来剥夺一个分组对组号分配的参与权．</span></li>
</ul>
</blockquote>
<p>
<span> </span><span>你也可以自己指定子表达式的</span><strong><span>组名</span></strong><span>。要指定一个子表达式的组名，请使用这样的语法：( </span><font color='red'><span>?</span><span>&lt;</span><span>Word&gt;\w+ </span></font><span>)(或者把尖括号换成&#39;也行：( </span><font color='red'><span>?&#39;Word&#39;\w+ </span></font><span>),这样就把</span><font color='red'><span> \w+ </span></font><span>的组名指定为 </span><font color='red'><span>Word </span></font><span>了。要反向引用这个分组</span><strong><span>捕获</span></strong><span>的内容，你可以使用</span><font color='red'><span> \k</span><span>&lt;</span><span>Word&gt; </span></font><span>,所以上一个例子也可以写成这样：</span><font color='red'><span>\b(?</span><span>&lt;</span><span>Word&gt;\w+)\b\s+\k</span><span>&lt;</span><span>Word&gt;\b </span></font><span>。</span>
</p>
<p><span> </span><span>使用小括号的时候，还有很多特定用途的语法。下面列出了最常用的一些：</span></p>
<pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang=""><div class="CodeMirror cm-s-inner CodeMirror-wrap" lang=""><div style="overflow: hidden; position: relative; width: 3px; height: 0px; top: 0px; left: 8px;"><textarea autocorrect="off" autocapitalize="off" spellcheck="false" tabindex="0" style="position: absolute; bottom: -1em; padding: 0px; width: 1000px; height: 1em; outline: none;"></textarea></div><div class="CodeMirror-scrollbar-filler" cm-not-content="true"></div><div class="CodeMirror-gutter-filler" cm-not-content="true"></div><div class="CodeMirror-scroll" tabindex="-1"><div class="CodeMirror-sizer" style="margin-left: 0px; margin-bottom: 0px; border-right-width: 0px; padding-right: 0px; padding-bottom: 0px;"><div style="position: relative; top: 0px;"><div class="CodeMirror-lines" role="presentation"><div role="presentation" style="position: relative; outline: none;"><div class="CodeMirror-measure"><pre><span>xxxxxxxxxx</span></pre></div><div class="CodeMirror-measure"></div><div style="position: relative; z-index: 1;"></div><div class="CodeMirror-code" role="presentation" style=""><div class="CodeMirror-activeline" style="position: relative;"><div class="CodeMirror-activeline-background CodeMirror-linebackground"></div><div class="CodeMirror-gutter-background CodeMirror-activeline-gutter" style="left: 0px; width: 0px;"></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">分类<span class="cm-tab" role="presentation" cm-text="	">  </span><span class="cm-tab" role="presentation" cm-text="	">    </span><span class="cm-tab" role="presentation" cm-text="	">    </span><span class="cm-tab" role="presentation" cm-text="	">    </span> 代码/语法<span class="cm-tab" role="presentation" cm-text="	">  </span><span class="cm-tab" role="presentation" cm-text="	">    </span><span class="cm-tab" role="presentation" cm-text="	">    </span><span class="cm-tab" role="presentation" cm-text="	">    </span>说明</span></pre></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">-----------------------------------------------------------------------------------------</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-tab" role="presentation" cm-text="	">    </span><span class="cm-tab" role="presentation" cm-text="	">    </span><span class="cm-tab" role="presentation" cm-text="	">    </span><span class="cm-tab" role="presentation" cm-text="	">    </span>  (exp)<span class="cm-tab" role="presentation" cm-text="	"> </span><span class="cm-tab" role="presentation" cm-text="	">    </span><span class="cm-tab" role="presentation" cm-text="	">    </span><span class="cm-tab" role="presentation" cm-text="	">    </span>匹配exp,并捕获文本到自动命名的组里</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">捕获 &nbsp; &nbsp;  <span class="cm-tab" role="presentation" cm-text="	">    </span><span class="cm-tab" role="presentation" cm-text="	">    </span> (?&lt;name&gt;exp)<span class="cm-tab" role="presentation" cm-text="	">   </span> &nbsp; 匹配exp,并捕获文本到名称为name的组里，也可以写成(?'name'exp)</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp; &nbsp;  <span class="cm-tab" role="presentation" cm-text="	">    </span><span class="cm-tab" role="presentation" cm-text="	">    </span>  (?:exp)<span class="cm-tab" role="presentation" cm-text="	">   </span><span class="cm-tab" role="presentation" cm-text="	">    </span><span class="cm-tab" role="presentation" cm-text="	">    </span>匹配exp,不捕获匹配的文本，也不给此分组分配组号</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">-----------------------------------------------------------------------------------------</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-tab" role="presentation" cm-text="	">    </span><span class="cm-tab" role="presentation" cm-text="	">    </span><span class="cm-tab" role="presentation" cm-text="	">    </span><span class="cm-tab" role="presentation" cm-text="	">    </span>  (?=exp) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 匹配exp前面的位置</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">零宽断言<span class="cm-tab" role="presentation" cm-text="	">    </span> &nbsp; &nbsp; &nbsp;  (?&lt;=exp) &nbsp; &nbsp; &nbsp; &nbsp;  匹配exp后面的位置</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  (?!exp)<span class="cm-tab" role="presentation" cm-text="	">   </span><span class="cm-tab" role="presentation" cm-text="	">    </span><span class="cm-tab" role="presentation" cm-text="	">    </span>匹配后面跟的不是exp的位置</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  (?&lt;!exp)<span class="cm-tab" role="presentation" cm-text="	">  </span><span class="cm-tab" role="presentation" cm-text="	">    </span><span class="cm-tab" role="presentation" cm-text="	">    </span>匹配前面不是exp的位置</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">----------------------------------------------------------------------------------------- </span></pre><div class="" style="position: relative;"><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">注释<span class="cm-tab" role="presentation" cm-text="	">  </span><span class="cm-tab" role="presentation" cm-text="	">    </span><span class="cm-tab" role="presentation" cm-text="	">    </span><span class="cm-tab" role="presentation" cm-text="	">    </span> (?#comment)<span class="cm-tab" role="presentation" cm-text="	">    </span> &nbsp; 这种类型的分组不对正则表达式的处理产生任何影响，用于提供注释</span></pre></div></div></div></div></div></div><div style="position: absolute; height: 0px; width: 1px; border-bottom: 0px solid transparent; top: 276px;"></div><div class="CodeMirror-gutters" style="display: none; height: 276px;"></div></div></div></pre>
<p><span> </span><span>我们已经讨论了前两种语法。第三个(</span><font color='red'><span> ?:exp </span></font><span>)不会改变正则表达式的处理方式，只是这样的组匹配的内容不会像前两种那样被捕获到某个组里面，也不会拥有组号。“我为什么会想要这样做？”——好问题，你觉得为什么呢？</span>
</p>
<p>&nbsp;</p>
<h2><a name="零宽断言" class="md-header-anchor"></a><span>零宽断言</span></h2>
<p><span> </span><span>接下来的四个用于查找在某些内容(但并不包括这些内容)之前或之后的东西，也就是说它们像</span><font color='red'><span> \b </span></font><span>,</span><font color='red'><span> ^ </span></font><span>,</span><font color='red'><span> $ </span></font><span>那样用于指定一个位置，这个位置应该满足一定的条件(即断言)，因此它们也被称为</span><strong><span>零宽断言</span></strong><span>。最好还是拿例子来说明吧：</span>
</p>
<p><span> </span><font color='red'><span> (?=exp) </span></font><span>也叫</span><strong><span>零宽度正预测先行断言</span></strong><span>，它</span><u><span>断言自身出现的位置的后面能匹配表达式exp</span></u><span>。比如</span><font color='red'><span> \b\w+(?=ing\b) </span></font><span>，匹配以</span><u><code>ing</code><span>结尾的单词的前面部分(除了</span><code>ing</code><span>以外的部分)</span></u><span>，如查找</span><code>I&#39;m
singing while you&#39;re
dancing.</code><span>时，它会匹配</span><u><code>sing</code></u><span>和</span><u><code>danc</code></u><span>。</span>
</p>
<p><span> </span><font color='red'><span> (?&lt;=exp) </span></font><span>也叫</span><strong><span>零宽度正回顾后发断言</span></strong><span>，它</span><u><span>断言自身出现的位置的前面能匹配表达式exp</span></u><span>。比如(</span><font color='red'><span> ?&lt;=\bre)\w+\b </span></font><span>会匹配以</span><u><span>re开头的单词的后半部分(除了re以外的部分)</span></u><span>，例如在查找</span><code>reading
a book</code><span>时，它匹配</span><code>ading</code><span>。</span></p>
<blockquote><p><span>地球人，是不是觉得这些术语名称太复杂，太难记了？我也有同感。知道有这么一种东西就行了，它叫什么，随它去吧！人若无名，便可专心练剑；物若无名，便可随意取舍……</span></p>
<p><span>断言用来声明一个应该为真的事实。正则表达式中只有当断言为真时才会继续进行匹配。</span></p></blockquote>
<p><span> </span><span>假如你想要给一个很长的数字中每三位间加一个逗号(当然是从右边加起了)，你可以这样查找需要在前面和里面添加逗号的部分：</span><font color='red'><span> ((?&lt;=\d)\d{3})+\b </span></font><span>，用它对</span><em><span>1234567890</span></em><span>进行查找时结果是</span><u><span>234567890</span></u><span>。</span>
</p>
<p><span> </span><span>下面这个例子同时使用了这两种断言：</span><font color='red'><span> (?&lt;=\s)\d+(?=\s) </span></font><span>匹配</span><u><span>以空白符间隔的数字(再次强调，不包括这些空白符)</span></u><span>。</span>
</p>
<p>&nbsp;</p>
<h2><a name="负向零宽断言" class="md-header-anchor"></a><span>负向零宽断言</span></h2>
<p><span> </span><span>前面我们提到过怎么查找</span><strong><span>不是某个字符或不在某个字符类里</span></strong><span>的字符的方法(反义)。但是如果我们只是想要</span><strong><span>确保某个字符没有出现，但并不想去匹配它</span></strong><span>时怎么办？例如，如果我们想查找这样的单词--它里面出现了字母q,但是q后面跟的不是字母u,我们可以尝试这样：</span>
</p>
<p><span> </span><font color='red'><span> \b\w</span><span>*</span><span>q</span><span>[</span><span>^u</span><span>]</span><span>\w</span><span>*</span><span>\b </span></font><span>匹配</span><u><span>包含</span><strong><span>后面不是字母u的字母q</span></strong><span>的单词</span></u><span>。但是如果多做测试(或者你思维足够敏锐，直接就观察出来了)，你会发现，如果q出现在单词的结尾的话，像</span><strong><span>Iraq</span></strong><span>,</span><strong><span>Benq</span></strong><span>，这个表达式就会出错。这是因为</span><span>[^u]</span><span>总要匹配一个字符，所以如果q是单词的最后一个字符的话，后面的</span><font color='red'><span>[</span><span>^u] </span></font><span>将会匹配q后面的单词分隔符(可能是空格，或者是句号或其它的什么)，后面的</span><font color='red'><span> \w</span><span>*</span><span>\b </span></font><span>将会匹配下一个单词，于是</span><font color='red'><span> \b\w</span><span>*</span><span>q</span><span>[</span><span>^u]\w</span><span>*</span><span>\b </span></font><span>就能匹配整个</span><em><span>Iraq fighting</span></em><span>。</span><strong><span>负向零宽断言</span></strong><span>能解决这样的问题，因为它只匹配一个位置，并不</span><strong><span>消费</span></strong><span>任何字符。现在，我们可以这样来解决这个问题：</span><font color='red'><span> \b\w</span><span>*</span><span>q(?!u)\w</span><span>*</span><span>\b  </span></font><span>。</span>
</p>
<p><span> </span><strong><span>零宽度负预测先行断言</span></strong><font color='red'><span> (?!exp) </span></font><span>，</span><u><span>断言此位置的后面不能匹配表达式exp</span></u><span>。例如：</span><font color='red'><span>\d{3}(?!\d) </span></font><span> 匹配三位数字，而且这</span><u><span>三位数字的后面不能是数字</span></u><span>；</span><font color='red'><span> \b((?!abc)\w)+\b </span></font><span>匹配</span><u><span>不包含连续字符串</span><code>abc</code><span>的单词</span></u><span>。</span>
</p>
<p><span>同理，我们可以用</span><font color='red'><span> (?&lt;!exp)</span></font><span>,</span><strong><span>零宽度负回顾后发断言</span></strong><span>来</span><u><span>断言此位置的前面不能匹配表达式exp</span></u><span>：</span><font color='red'><span> (?&lt;![a-z])\d{7}  </span></font><span>匹配</span><u><span>前面不是小写字母的七位数字</span></u><span>。</span>
</p>
<p><span> </span><span>一个更复杂的例子：</span><font color='red'><span> (?&lt;=&lt;(\w+)&gt;).</span><span>*</span><span>(?=&lt;\/\1&gt;) </span></font><u><span>匹配不包含属性的简单HTML标签内里的内容</span></u><span>。</span><font color='red'><span>(?&lt;=&lt;(\w+)&gt;) </span></font><span>指定了这样的</span><strong><span>前缀</span></strong><span>：</span><u><span>被尖括号括起来的单词</span></u><span>(比如可能是</span><span>&lt;</span><span>b&gt;)，然后是</span><font color='red'><span> .* </span></font><span>(任意的字符串),最后是一个</span><strong><span>后缀</span></strong><span> </span><font color='red'><span>(?=&lt;\/\1&gt;) </span></font><span>。注意后缀里的</span><font color='red'><span>\/ </span></font><span>，它用到了前面提过的字符转义；</span><font color='red'><span>\1 </span></font><span>则是一个反向引用，引用的正是</span><u><span>捕获的第一组</span></u><span>，前面的</span><font color='red'><span> (\w+) </span></font><span>匹配的内容，这样如果前缀实际上是</span><span>&lt;</span><span>b&gt;的话，后缀就是</span><span>&lt;</span><span>/b&gt;了。整个表达式匹配的是</span><span>&lt;</span><span>b&gt;和</span><span>&lt;</span><span>/b&gt;之间的内容(再次提醒，不包括前缀和后缀本身)。</span>
</p>
<blockquote><p><span>请详细分析表达式</span><font color='red'><span> (?&lt;=&lt;(\w+)&gt;).</span><span>*</span><span>(?=&lt;\/\1&gt;) </span></font><span>，这个表达式最能表现零宽断言的真正用途。</span>
</p></blockquote>
<p>&nbsp;</p>
<h2><a name="注释" class="md-header-anchor"></a><span>注释</span></h2>
<p><span> </span><span>小括号的另一种用途是通过语法</span><font color='red'><span> (?#comment) </span></font><span>来包含注释。例如：</span><font color='red'><span> 2[0-4]\d(?#200-249)|25</span><span>[</span><span>0-5](?#250-255)|[01]?\d\d?(?#0-199) </span></font><span>。</span>
</p>
<p><span> </span><span>要包含注释的话，最好是启用“忽略模式里的空白符”选项，这样在编写表达式时能任意的添加空格，Tab，换行，而实际使用时这些都将被忽略。启用这个选项后，在#后面到这一行结束的所有文本都将被当成注释忽略掉。例如，我们可以前面的一个表达式写成这样：</span>
</p>
<figure>
<table>
<thead>
<tr>
<th>&nbsp;</th>
<th>&nbsp;</th>
</tr>
</thead>
<tbody>
<tr>
<td><span>(?&lt;=</span></td>
<td><span># 断言要匹配的文本的前缀</span></td>
</tr>
<tr>
<td><span>&lt;(\w+)&gt;</span></td>
<td><span># 查找尖括号括起来的字母或数字(即HTML/XML标签)</span></td>
</tr>
<tr>
<td><span> )</span></td>
<td><span># 前缀结束</span></td>
</tr>
<tr>
<td><span>.* </span></td>
<td><span> # 匹配任意文本</span></td>
</tr>
<tr>
<td><span>(?= </span></td>
<td><span># 断言要匹配的文本的后缀</span></td>
</tr>
<tr>
<td><span>&lt;\/\1&gt; </span></td>
<td><span># 查找尖括号括起来的内容：前面是一个&quot;/&quot;，后面是先前捕获的标签</span></td>
</tr>
<tr>
<td><span> ) </span></td>
<td><span># 后缀结束</span></td>
</tr>
</tbody>
</table>
</figure>
<p>&nbsp;</p>
<h2><a name="贪婪与懒惰" class="md-header-anchor"></a><span>贪婪与懒惰</span></h2>
<p>
<span> </span><span>当正则表达式中包含能接受重复的限定符时，通常的行为是（在使整个表达式能得到匹配的前提下）匹配</span><strong><span>尽可能多</span></strong><span>的字符。以这个表达式为例：</span><font color='red'><span>a.</span><span>*</span><span>b </span></font><span>，它将会匹配</span><u><span>最长的以a开始，以b结束的字符串</span></u><span>。如果用它来搜索</span><em><code>aabab</code></em><span>的话，它会匹配整个字符串</span><u><em><code>aabab</code></em></u><span>。这被称为</span><strong><span>贪婪</span></strong><span>匹配。</span>
</p>
<p>
<span> </span><span>有时，我们更需要</span><strong><span>懒惰</span></strong><span>匹配，也就是匹配</span><strong><span>尽可能少</span></strong><span>的字符。前面给出的限定符都可以被转化为懒惰匹配模式，只要在它后面加上一个问号</span><font color='red'><span> ? </span></font><span>。这样</span><font color='red'><span> .*? </span></font><span>就意味着</span><u><span>匹配任意数量的重复，但是在能使整个匹配成功的前提下使用最少的重复</span></u><span>。现在看看懒惰版的例子吧：</span>
</p>
<p><span> </span><font color='red'><span> a.</span><span>*</span><span>?b </span></font><span>匹配</span><u><span>最短的，以a开始，以b结束的字符串</span></u><span>。如果把它应用于</span><em><code>aabab</code></em><span>的话，它会匹配</span><u><code>aab</code><span>（第一到第三个字符）</span></u><span>和 </span><u><span>ab（第四到第五个字符）</span></u><span>。</span>
</p>
<figure>
<table>
<thead>
<tr>
<th><strong><span>代码/语法</span></strong></th>
<th><strong><span>说明</span></strong></th>
</tr>
</thead>
<tbody>
<tr>
<td><span>*?</span></td>
<td><span>重复任意次，但尽可能少重复</span></td>
</tr>
<tr>
<td><span>+?</span></td>
<td><span>重复1次或更多次，但尽可能少重复</span></td>
</tr>
<tr>
<td><span>??</span></td>
<td><span>重复0次或1次，但尽可能少重复</span></td>
</tr>
<tr>
<td><span>{n,m}?</span></td>
<td><span>重复n到m次，但尽可能少重复</span></td>
</tr>
<tr>
<td><span>{n,}?</span></td>
<td><span>重复n次以上，但尽可能少重复</span></td>
</tr>
</tbody>
</table>
</figure>
<blockquote><p><span>为什么第一个匹配是aab（第一到第三个字符）而不是ab（第二到第三个字符）？简单地说，因为正则表达式有另一条规则，比懒惰／贪婪规则的优先级更高：最先开始的匹配拥有最高的优先权——The match that begins earliest wins。</span>
</p></blockquote>
<p>&nbsp;</p>
<h2><a name="处理选项" class="md-header-anchor"></a><span>处理选项</span></h2>
<p><span> </span><span>上面介绍了几个选项如忽略大小写，处理多行等，这些选项能用来改变处理正则表达式的方式。下面是.Net中常用的正则表达式选项：</span></p>
<figure>
<table>
<thead>
<tr>
<th><strong><span>名称</span></strong></th>
<th><span>说明</span></th>
</tr>
</thead>
<tbody>
<tr>
<td><code>IgnoreCase</code><span>(忽略大小写)</span></td>
<td><span>匹配时不区分大小写</span></td>
</tr>
<tr>
<td><code>Multiline</code><span>(多行模式)</span></td>
<td><span>更改 </span><font color='red'><span>^ </span></font><span>和</span><font color='red'><span> $ </span></font><span>的含义，使它们分别在任意一行的行首和行尾匹配，而不仅仅在整个字符串的开头和结尾匹配。(在此模式下,</span><font color='red'><span> $ </span></font><span>的精确含意是:匹配\n之前的位置以及字符串结束前的位置.)</span></td>
</tr>
<tr>
<td><code>Singleline</code><span>(单行模式)</span></td>
<td><span>更改.的含义，使它与每一个字符匹配（包括换行符\n）</span></td>
</tr>
<tr>
<td><code>IgnorePatternWhitespace</code><span>(忽略空白)</span></td>
<td><span>忽略表达式中的非转义空白并启用由</span><font color='red'><span> # </span></font><span>标记的注释</span></td>
</tr>
<tr>
<td><code>ExplicitCapture</code><span>(显式捕获)</span></td>
<td><span>仅捕获已被显式命名的组</span></td>
</tr>
</tbody>
</table>
</figure>
<p>
<span> </span><span>一个经常被问到的问题是：是不是只能同时使用多行模式和单行模式中的一种？答案是：不是。这两个选项之间没有任何关系，除了它们的名字比较相似（以至于让人感到疑惑）以外。</span>
</p>
<blockquote><p><span>在C#中，你可以使用</span><a href='http://msdn2.microsoft.com/zh-cn/library/h5845fdz.aspx'><span>Regex(String, RegexOptions)构造函数</span></a><span>来设置正则表达式的处理选项。如：Regex regex = new Regex(@&quot;\ba\w{6}\b&quot;, RegexOptions.IgnoreCase);</span>
</p></blockquote>
<p>&nbsp;</p>
<h2><a name="平衡组递归匹配" class="md-header-anchor"></a><span>平衡组/递归匹配</span></h2>
<p>
<span> </span><span>有时我们需要匹配像</span><u><span>( 100 * ( 50 + 15 ) )</span></u><span>这样的可嵌套的层次性结构，这时简单地使用</span><font color='red'><span> </span><span>\</span><span>(.+</span><span>\</span><span>) </span></font><span>则只会匹配到最左边的左括号和最右边的右括号之间的内容(这里我们讨论的是贪婪模式，懒惰模式也有下面的问题)。假如原来的字符串里的左括号和右括号出现的次数不相等，比如</span><em><span>( 5 / ( 3 + 2 ) ) )</span></em><span>，那我们的匹配结果里两者的个数也不会相等。有没有办法在这样的字符串里匹配到最长的，配对的括号之间的内容呢？</span>
</p>
<blockquote><p><span>这里介绍的平衡组语法是由.Net Framework支持的；其它语言／库不一定支持这种功能，或者支持此功能但需要使用不同的语法。</span></p></blockquote>
<p><span> </span><span>为了避免</span><font color='red'><span> ( </span></font><span>和</span><font color='red'><span> </span><span>\</span><span>( </span></font><span>把你的大脑彻底搞糊涂，我们还是用尖括号代替圆括号吧。现在我们的问题变成了如何把</span><em><span>xx aa&gt; yy</span></em><span>这样的字符串里，最长的配对的尖括号内的内容捕获出来？</span>
</p>
<p><span> </span><span>这里需要用到以下的语法构造：</span></p>
<ul>
<li><p><font color='red'><span> (?&#39;group&#39;)  </span></font><span>把捕获的内容命名为group,并压入</span><strong><span>堆栈(Stack)</span></strong>
</p></li>
<li><p><font color='red'><span> (?&#39;-group&#39;) </span></font><span> 从堆栈上弹出最后压入堆栈的名为group的捕获内容，如果堆栈本来为空，则本分组的匹配失败</span>
</p></li>
<li><p><font color='red'><span> (?(group)yes|no) </span></font><span> 如果堆栈上存在以名为group的捕获内容的话，继续匹配yes部分的表达式，否则继续匹配no部分</span>
</p></li>
<li><p><font color='red'><span> (?!) </span></font><span> 零宽负向先行断言，由于没有后缀表达式，试图匹配总是失败</span></p>
<p><span>我们需要做的是每碰到了左括号，就在压入一个&quot;Open&quot;,每碰到一个右括号，就弹出一个，到了最后就看看堆栈是否为空－－如果不为空那就证明左括号比右括号多，那匹配就应该失败。正则表达式引擎会进行回溯(放弃最前面或最后面的一些字符)，尽量使整个表达式得到匹配。</span>
</p></li>
</ul>
<blockquote><p><span>如果你不是一个程序员（或者你自称程序员但是不知道堆栈是什么东西），你就这样理解上面的三种语法吧：第一个就是在黑板上写一个&quot;group&quot;，第二个就是从黑板上擦掉一个&quot;group&quot;，第三个就是看黑板上写的还有没有&quot;group&quot;，如果有就继续匹配yes部分，否则就匹配no部分。</span>
</p></blockquote>
<pre lang="js" class="md-fences md-end-block ty-contain-cm modeLoaded" spellcheck="false" style="break-inside: unset;"><div class="CodeMirror cm-s-inner CodeMirror-wrap" lang="js"><div style="overflow: hidden; position: relative; width: 3px; height: 0px; top: 0px; left: 8px;"><textarea autocorrect="off" autocapitalize="off" spellcheck="false" tabindex="0" style="position: absolute; bottom: -1em; padding: 0px; width: 1000px; height: 1em; outline: none;"></textarea></div><div class="CodeMirror-scrollbar-filler" cm-not-content="true"></div><div class="CodeMirror-gutter-filler" cm-not-content="true"></div><div class="CodeMirror-scroll" tabindex="-1"><div class="CodeMirror-sizer" style="margin-left: 0px; margin-bottom: 0px; border-right-width: 0px; padding-right: 0px; padding-bottom: 0px;"><div style="position: relative; top: 0px;"><div class="CodeMirror-lines" role="presentation"><div role="presentation" style="position: relative; outline: none;"><div class="CodeMirror-measure"><pre><span>xxxxxxxxxx</span></pre></div><div class="CodeMirror-measure"></div><div style="position: relative; z-index: 1;"></div><div class="CodeMirror-code" role="presentation" style=""><div class="CodeMirror-activeline" style="position: relative;"><div class="CodeMirror-activeline-background CodeMirror-linebackground"></div><div class="CodeMirror-gutter-background CodeMirror-activeline-gutter" style="left: 0px; width: 0px;"></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-operator">&lt;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="cm-error">#最外层的左括号</span></span></pre></div><div class="" style="position: relative;"><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">[<span class="cm-operator">^&lt;&gt;</span>]<span class="cm-operator">*</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="cm-tab" role="presentation" cm-text="	">   </span> &nbsp;<span class="cm-error">#最外层的左括号后面的不是括号的内容</span></span></pre></div><div class="" style="position: relative;"><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> (</span></pre></div><div class="" style="position: relative;"><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> (</span></pre></div><div class="" style="position: relative;"><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> (<span class="cm-operator">?</span><span class="cm-string">'Open'</span><span class="cm-operator">&lt;</span>) &nbsp;  <span class="cm-tab" role="presentation" cm-text="	"> </span><span class="cm-tab" role="presentation" cm-text="	">    </span><span class="cm-tab" role="presentation" cm-text="	">    </span> &nbsp;<span class="cm-error">#碰到了左括号，在黑板上写一个"Open"</span></span></pre></div><div class="" style="position: relative;"><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> [<span class="cm-operator">^&lt;&gt;</span>]<span class="cm-operator">*</span> &nbsp; &nbsp; &nbsp; <span class="cm-tab" role="presentation" cm-text="	">  </span><span class="cm-tab" role="presentation" cm-text="	">    </span><span class="cm-tab" role="presentation" cm-text="	">    </span> &nbsp;<span class="cm-error">#匹配左括号后面的不是括号的内容</span></span></pre></div><div class="" style="position: relative;"><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">  )<span class="cm-operator">+</span></span></pre></div><div class="" style="position: relative;"><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;  (</span></pre></div><div class="" style="position: relative;"><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;  (<span class="cm-operator">?</span><span class="cm-string">'-Open'</span><span class="cm-operator">&gt;</span>) &nbsp; <span class="cm-tab" role="presentation" cm-text="	">    </span> &nbsp;<span class="cm-error">#碰到了右括号，擦掉一个"Open"</span></span></pre></div><div class="" style="position: relative;"><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp; &nbsp; [<span class="cm-operator">^&lt;&gt;</span>]<span class="cm-operator">*</span> &nbsp; &nbsp; &nbsp;  <span class="cm-tab" role="presentation" cm-text="	">   </span> &nbsp;<span class="cm-error">#匹配右括号后面不是括号的内容</span></span></pre></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">  )<span class="cm-operator">+</span></span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;  )<span class="cm-operator">*</span></span></pre><div class="" style="position: relative;"><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp; &nbsp; &nbsp;  (<span class="cm-operator">?</span>(<span class="cm-variable">Open</span>)(<span class="cm-operator">?!</span>)) &nbsp; <span class="cm-error">#在遇到最外层的右括号前面，判断黑板上还有没有没擦掉的"Open"；如果还有，则匹配失败</span></span></pre></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span cm-text="">​</span></span></pre><div class="" style="position: relative;"><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="cm-operator">&gt;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="cm-error">#最外层的右括号</span></span></pre></div></div></div></div></div></div><div style="position: absolute; height: 0px; width: 1px; border-bottom: 0px solid transparent; top: 368px;"></div><div class="CodeMirror-gutters" style="display: none; height: 368px;"></div></div></div></pre>
<p><span> </span><span>平衡组的一个最常见的应用就是匹配HTML,下面这个例子可以匹配嵌套的</span><span>&lt;</span><span>div&gt;标签：</span><font color='red'><span> &lt;div</span><span>[</span><span>^&gt;]</span><span>*</span><span>&gt;</span><span>[</span><span>^&lt;&gt;]*(((?&#39;Open&#39;]</span><span>*</span><span>&gt;)</span><span>[</span><span>^&lt;&gt;]</span><span>*</span><span>)+((?&#39;-Open&#39;)</span><span>[</span><span>^&lt;&gt;]</span><span>*</span><span>)+)</span><span>*</span><span>(?(Open)(?!))</span><span>&lt;</span><span>/div&gt; </span></font>
</p>
<p>&nbsp;</p>
<h2><a name="还有些什么东西没提到" class="md-header-anchor"></a><span>还有些什么东西没提到</span></h2>
<p><span> </span><span>上边已经描述了构造正则表达式的大量元素，但是还有很多没有提到的东西。下面是一些未提到的元素的列表，包含语法和简单的说明。你可以在网上找到更详细的参考资料来学习它们--当你需要用到它们的时候。如果你安装了MSDN Library,你也可以在里面找到.net下正则表达式详细的文档。</span>
</p>
<figure>
<table>
<thead>
<tr>
<th style='text-align:center;'><strong><span>代码/语法</span></strong></th>
<th style='text-align:left;'><span>说明</span></th>
</tr>
</thead>
<tbody>
<tr>
<td style='text-align:center;'><span>\a</span></td>
<td style='text-align:left;'><span>报警字符(打印它的效果是电脑嘀一声)</span></td>
</tr>
<tr>
<td style='text-align:center;'><span>\b</span></td>
<td style='text-align:left;'><span>通常是单词分界位置，但如果在字符类里使用代表退格</span></td>
</tr>
<tr>
<td style='text-align:center;'><span>\t</span></td>
<td style='text-align:left;'><span>制表符，Tab</span></td>
</tr>
<tr>
<td style='text-align:center;'><span>\r</span></td>
<td style='text-align:left;'><span>回车</span></td>
</tr>
<tr>
<td style='text-align:center;'><span>\v</span></td>
<td style='text-align:left;'><span>竖向制表符</span></td>
</tr>
<tr>
<td style='text-align:center;'><span>\f</span></td>
<td style='text-align:left;'><span>换页符</span></td>
</tr>
<tr>
<td style='text-align:center;'><span>\n</span></td>
<td style='text-align:left;'><span>换行符</span></td>
</tr>
<tr>
<td style='text-align:center;'><span>\e</span></td>
<td style='text-align:left;'><span>Escape</span></td>
</tr>
<tr>
<td style='text-align:center;'><span>\0nn</span></td>
<td style='text-align:left;'><span>ASCII代码中八进制代码为nn的字符</span></td>
</tr>
<tr>
<td style='text-align:center;'><span>\xnn</span></td>
<td style='text-align:left;'><span>ASCII代码中十六进制代码为nn的字符</span></td>
</tr>
<tr>
<td style='text-align:center;'><span>\unnnn</span></td>
<td style='text-align:left;'><span>Unicode代码中十六进制代码为nnnn的字符</span></td>
</tr>
<tr>
<td style='text-align:center;'><span>\cN</span></td>
<td style='text-align:left;'><span>ASCII控制字符。比如\cC代表Ctrl+C</span></td>
</tr>
<tr>
<td style='text-align:center;'><span>\A</span></td>
<td style='text-align:left;'><span>字符串开头(类似^，但不受处理多行选项的影响</span></td>
</tr>
<tr>
<td style='text-align:center;'><span>\Z</span></td>
<td style='text-align:left;'><span>字符串结尾或行尾(不受处理多行选项的影响)</span></td>
</tr>
<tr>
<td style='text-align:center;'><span>\z</span></td>
<td style='text-align:left;'><span>字符串结尾(类似$，但不受处理多行选项的影响)</span></td>
</tr>
<tr>
<td style='text-align:center;'><span>\G</span></td>
<td style='text-align:left;'><span>当前搜索的开头</span></td>
</tr>
<tr>
<td style='text-align:center;'><span>\p{name}</span></td>
<td style='text-align:left;'><span>Unicode中命名为name的字符类，例如\p{IsGreek}</span></td>
</tr>
<tr>
<td style='text-align:center;'><span>(?&gt;exp)</span></td>
<td style='text-align:left;'><span>贪婪子表达式</span></td>
</tr>
<tr>
<td style='text-align:center;'><span>(?</span><span>&lt;</span><span>x&gt;</span><span>-</span><span>&lt;</span><span>y&gt;exp)</span>
</td>
<td style='text-align:left;'><span>平衡组</span></td>
</tr>
<tr>
<td style='text-align:center;'><span>(?im-nsx:exp)</span></td>
<td style='text-align:left;'><span>在子表达式exp中改变处理选项</span></td>
</tr>
<tr>
<td style='text-align:center;'><span>(?im-nsx)</span></td>
<td style='text-align:left;'><span>为表达式后面的部分改变处理选项</span></td>
</tr>
<tr>
<td style='text-align:center;'><span>(?(exp)yes|no)</span></td>
<td style='text-align:left;'><span>把exp当作零宽正向先行断言，如果在这个位置能匹配，使用yes作为此组的表达式；否则使用no</span></td>
</tr>
<tr>
<td style='text-align:center;'><span>(?(exp)yes)</span></td>
<td style='text-align:left;'><span>同上，只是使用空表达式作为no</span></td>
</tr>
<tr>
<td style='text-align:center;'><span>(?(name)yes|no)</span></td>
<td style='text-align:left;'><span>如果命名为name的组捕获到了内容，使用yes作为表达式；否则使用no</span></td>
</tr>
<tr>
<td style='text-align:center;'><span>(?(name)yes)</span></td>
<td style='text-align:left;'><span>同上，只是使用空表达式作为no</span></td>
</tr>
</tbody>
</table>
</figure>
<p>&nbsp;</p>
<h2><a name="联系作者" class="md-header-anchor"></a><span>联系作者</span></h2>
<p><span> </span><span>好吧,我承认,我骗了你,读到这里你肯定花了不止30分钟.相信我,这是我的错,而不是因为你太笨.我之所以说&quot;30分钟&quot;,是为了让你有信心,有耐心继续下去.既然你看到了这里,那证明我的阴谋成功了.被忽悠的感觉很爽吧？</span>
</p>
<p><span> </span><span>要投诉我,或者觉得我其实可以忽悠得更高明,或者有任何其它问题,欢迎来</span><a href='index.html'><span>我的博客</span></a><span>让我知道.</span></p>
<p>&nbsp;</p>
<h2><a name="网上的资源及本文参考文献" class="md-header-anchor"></a><span>网上的资源及本文参考文献</span></h2>
<ul>
<li>
<a href='http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/jscript7/html/jsreconintroductiontoregularexpressions.asp'><span>微软的正则表达式教程</span></a>
</li>
<li><a href='http://msdn2.microsoft.com/zh-cn/library/system.text.regularexpressions.regex.aspx'><span>System.Text.RegularExpressions.Regex类(MSDN)</span></a>
</li>
<li><a href='http://www.regular-expressions.info/'><span>专业的正则表达式教学网站(英文)</span></a></li>
<li>
<a href='http://weblogs.asp.net/whaggard/archive/2005/02/20/377025.aspx'><span>关于.Net下的平衡组的详细讨论（英文）</span></a>
</li>
<li><a href='http://www.oreilly.com/catalog/regex2/'><span>Mastering Regular Expressions (Second Edition)</span></a>
</li>
</ul>
</div>
</div>
<div class="t-big-margin"><script>jiazai_dag_all('INDEX_PC_HENGFU')</script></div>






<div class="recent-use-box">
<p>您最近使用了：</p>
<div id="recentUse">
</div>
</div>





<div class="footer-nav relative">
<ul class="footer-nav-tabs">
<li class=""><a href="index.html#2" aa="2" bb="138">JSON工具</a></li>
<li class=""><a href="index.html#6" aa="6" bb="138">编码/加密</a></li>
<li class=""><a href="index.html#18" aa="18" bb="138">格式化</a></li>
<li class=""><a href="index.html#81" aa="81" bb="138">网络</a></li>
<li class=""><a href="index.html#21" aa="21" bb="138">前端</a></li>
<li class=""><a href="index.html#26" aa="26" bb="138">后端</a></li>
<li class=""><a href="index.html#24" aa="24" bb="138">转换</a></li>
<li class=""><a href="index.html#29" aa="29" bb="138">其他</a></li>
<li class="active"><a href="index.html#138" aa="138" bb="138">文档</a></li>
 <li class=""><a href="index.html#139" aa="139" bb="138">平台工具</a></li>
<li class=""><a href="index.html#141" aa="141" bb="138">更多</a></li>
</ul>
<div class="tab-con">
<div class="footer-nav-con " id="2">
<ul>
<li>
<a href="http://www.bejson.com/json/format/" class="circle-stress">
格式化校验 </a>
</li>
<li>
<a href="http://www.bejson.com/jsonviewernew/" class="">
JSON视图 </a>
</li>
<li>
<a href="http://www.bejson.com/zhuanyi/" class="">
JSON压缩转义 </a>
</li>
<li>
<a href="http://www.bejson.com/json2javapojo/new/" class="">
JSON生成Java实体类 </a>
</li>
<li>
<a href="http://www.bejson.com/convert/json2csharp/" class="">
JSON转C#实体类 </a>
</li>
<li>
<a href="http://www.bejson.com/jsoneditoronline/" class="">
JSON在线编辑器 </a>
</li>
<li>
<a href="http://www.bejson.com/json/jsonsort/" class="">
JSON排序 </a>
</li>
<li>
<a href="http://www.bejson.com/color/" class="">
JSON着色 </a>
</li>
<li>
<a href="http://www.bejson.com/xml2json/" class="">
XML-JSON互转 </a>
</li>
<li>
<a href="http://www.bejson.com/jsontools/json2get/" class="">
JSON和GET请求字符串互转 </a>
</li>
<li>
<a href="http://www.bejson.com/json/col2json/" class="">
Excel转Json </a>
</li>
<li>
<a href="http://www.bejson.com/json/json2excel/" class="">
JSON转csv、excel </a>
</li>
<li>
<a href="http://www.bejson.com/json/json2yaml/" class="">
在线JSON转yaml,yaml转JSON </a>
</li>
<li>
<a href="http://www.bejson.com/explore/index_new/" class="">
JSON校验格式化工具(新) </a>
</li>
</ul>
</div>
<div class="footer-nav-con " id="6">
<ul>
<li>
<a href="http://www.bejson.com/enc/base64/" class="">
Base64加密、解密 </a>
</li>
<li>
<a href="http://www.bejson.com/enc/md5/" class="">
MD5加密 </a>
</li>
<li>
<a href="http://www.bejson.com/enc/md5dsc/" class="">
MD5解密 </a>
</li>
<li>
<a href="http://www.bejson.com/enc/aesdes/" class="">
DES,AES等对称加密解密 </a>
</li>
<li>
 <a href="http://www.bejson.com/enc/rsa/" class="">
RSA,RSA2公钥私钥加密解密 </a>
</li>
<li>
<a href="http://www.bejson.com/enc/sha/" class="">
SHA加密 </a>
</li>
<li>
<a href="http://www.bejson.com/enc/escape/" class="">
Escape编码 </a>
</li>
<li>
<a href="http://www.bejson.com/enc/urlencode/" class="">
URL编码 </a>
</li>
<li>
<a href="http://www.bejson.com/enc/eval_package/" class="">
Javascript Eval加密解密 </a>
</li>
<li>
<a href="http://www.bejson.com/encrypt/jsobfuscate/" class="">
Javascript加密混淆 </a>
</li>
<li>
<a href="http://www.bejson.com/enc/morse/" class="">
摩斯密码加密解密 </a>
</li>
<li>
<a href="http://www.bejson.com/convert/unicode_chinese/" class="">
unicode中文互转 </a>
</li>
</ul>
</div>
<div class="footer-nav-con " id="18">
<ul>
<li>
<a href="http://www.bejson.com/jshtml_format/" class="circle-stress">
Javascript/HTML压缩、格式化 </a>
</li>
<li>
<a href="http://www.bejson.com/otherformat/css/" class="">
CSS压缩、格式化 </a>
</li>
<li>
<a href="http://www.bejson.com/otherformat/xmlsort/" class="">
XML排序、压缩、格式化 </a>
</li>
<li>
<a href="http://www.bejson.com/otherformat/sql/" class="">
SQL压缩、格式化 </a>
</li>
</ul>
</div>
<div class="footer-nav-con " id="81">
<ul>
<li>
<a href="http://www.bejson.com/network/profession_request_tools/" class="">
模拟HTTP请求工具 </a>
</li>
<li>
<a href="http://www.bejson.com/httputil/websocket/" class="">
在线模拟websocket请求工具 </a>
</li>
<li>
<a href="http://www.bejson.com/httputil/getip/" class="">
获取你的IP </a>
</li>
<li>
<a href="http://www.bejson.com/httputil/queryip/" class="">
获取IP信息 </a>
</li>
<li>
<a href="http://www.bejson.com/httputil/ip2addr/" class="">
IP定位周边信息 </a>
</li>
<li>
<a href="http://www.bejson.com/httputil/clientinfo/" class="">
获取您的浏览器信息 </a>
</li>
<li>
<a href="http://www.bejson.com/httputil/useragent/" class="">
常用USER_AGENT </a>
 </li>
<li>
<a href="http://www.bejson.com/convert/ip2int/" class="">
IP转数字,数字转IP </a>
</li>
<li>
<a href="http://www.bejson.com/convert/subnetmask/" class="">
TCP/IP子网掩码计算换算 </a>
</li>
<li>
<a href="http://www.bejson.com/network/newsubnetmask/" class="">
子网掩码换算(新) </a>
</li>
<li>
<a href="http://www.bejson.com/httputil/cipher_suites/" class="">
SSL协议套件探测 </a>
</li>
</ul>
</div>
<div class="footer-nav-con " id="21">
<ul>
<li>
<a href="http://www.bejson.com/ui/tuchuang/" class="">
图床 </a>
</li>
<li>
<a href="http://www.bejson.com/convert/gif2frame/" class="">
在线GIF转成帧 </a>
</li>
<li>
<a href="http://www.bejson.com/convert/html_js/" class="">
在线html转js,js转html </a>
</li>
<li>
<a href="http://www.bejson.com/ui/fontawesome/" class="">
fontawesome图标在线查询 </a>
</li>
<li>
<a href="http://www.bejson.com/othertools/keycodes/" class="">
在线获取键盘按键值(keycode,ascii码) </a>
</li>
<li>
<a href="http://www.bejson.com/convert/str2img/" class="">
字符生成线条字 </a>
</li>
<li>
<a href="http://www.bejson.com/ui/compress_img/" class="">
图片压缩工具 </a>
</li>
<li>
<a href="http://www.bejson.com/ui/gen_player/" class="">
生成音乐播放器 </a>
</li>
<li>
<a href="http://www.bejson.com/ui/photoshop/" class="">
在线photoshop </a>
</li>
<li>
<a href="http://www.bejson.com/pages/cooleditor/" class="">
在线代码编辑器 </a>
</li>
<li>
<a href="http://www.bejson.com/ui/borderradius/" class="">
在线生成圆角 </a>
</li>
<li>
<a href="https://h5.bce.baidu.com/store" class="" target="_blank">
H5模板在线制作 </a>
</li>
<li>
<a href="http://www.bejson.com/ui/icomaker/" class="">
ICO图标在线生成转换工具 </a>
</li>
<li>
<a href="http://www.bejson.com/ui/create_logo/" class="">
IOS安卓logo在线生成器 </a>
</li>
<li>
<a href="http://www.bejson.com/ui/ueditor/" class="">
ueditor在线代码编辑器 </a>
 </li>
<li>
<a href="http://www.bejson.com/ui/runjs/" class="">
RunJS在线编辑器 </a>
</li>
<li>
<a href="http://www.bejson.com/ui/safecolor/" class="">
WEB安全色 </a>
</li>
<li>
<a href="http://www.bejson.com/ui/getcolor/" class="">
在线调色板 </a>
</li>
<li>
<a href="http://www.bejson.com/ui/imagehandler/" class="">
在线图片大小格式(支持webp)转换 </a>
</li>
<li>
<a href="http://www.bejson.com/ui/image2base64/" class="">
在线图片转Base64编码 </a>
</li>
<li>
<a href="https://www.iconfont.cn/plus/collections/index" class="" target="_blank">
阿里巴巴矢量图标库 </a>
</li>
<li>
<a href="http://www.bejson.com/ui/phonesize/" class="">
iPhone/iPad/Android UI尺寸规范 </a>
</li>
<li>
<a href="http://www.bejson.com/ui/svg_editor/" class="">
SVG代码编辑预览 </a>
</li>
<li>
<a href="https://fontawesome.com/icons?from=io" class="" target="_blank">
fontawesome矢量图标库 </a>
</li>
<li>
<a href="http://www.bejson.com/ui/openweb/" class="">
弹出窗口生成器 </a>
</li>
<li>
<a href="http://www.bejson.com/othertools/libcdn/" class="">
常用js库 </a>
</li>
<li>
<a href="http://www.bejson.com/ui/texteditor/" class="">
在线自动排版工具 </a>
</li>
</ul>
</div>
<div class="footer-nav-con " id="26">
<ul>
<li>
<a href="http://www.bejson.com/json2javapojo/new/" class="">
JSON生成Java实体类 </a>
</li>
<li>
<a href="https://java.bejson.com/generator/" class="" target="_blank">
SQL生成Java代码 </a>
</li>
<li>
<a href="http://www.bejson.com/convert/json2csharp/" class="">
JSON转C#实体类 </a>
</li>
<li>
<a href="http://www.bejson.com/devtools/sql2pojo/" class="">
mysql转Java实体类 </a>
</li>
<li>
<a href="http://www.bejson.com/devtools/sql2csharppojo/" class="">
SQL转CSharp实体类 </a>
</li>
<li>
<a href="http://www.bejson.com/othertools/sql2pojo/" class="">
oracle转Java实体类 </a>
</li>
<li>
<a href="http://www.bejson.com/devtools/sqlview/" class="">
数据库插入、修改语句字段视图 </a>
</li>
<li>
<a href="http://www.bejson.com/devtools/properties2yaml/" class="">
properties转yaml </a>
</li>
<li>
<a href="http://www.bejson.com/validators/yaml_editor/" class="">
YAML、YML在线编辑(校验)器 </a>
</li>
</ul>
</div>
<div class="footer-nav-con " id="24">
<ul>
<li>
<a href="http://www.bejson.com/convert/html_string/" class="">
字符串拼接（多语言） </a>
</li>
<li>
<a href="http://www.bejson.com/convert/camel_underscore/" class="">
驼峰转下划线，下划线转驼峰 </a>
</li>
<li>
<a href="http://www.bejson.com/convert/html_js/" class="">
在线html转js，js转html </a>
</li>
<li>
<a href="http://www.bejson.com/convert/ueditor2markdown/" class="">
在线ueditor富文本编辑器转markdown语法 </a>
</li>
<li>
<a href="http://www.bejson.com/convert/deserialize/" class="">
PHP反序列化成JSON和代码 </a>
</li>
<li>
<a href="http://www.bejson.com/ui/imagehandler/" class="">
在线图片大小格式(支持webp)转化 </a>
</li>
<li>
<a href="http://www.bejson.com/convert/image_to_svg/" class="">
jpg，png图片在线转svg </a>
</li>
<li>
<a href="http://www.bejson.com/convert/map/" class="">
在线地图经纬度定位换算 </a>
</li>
<li>
<a href="http://www.bejson.com/ui/px2em/" class="">
px转em，em转px </a>
</li>
<li>
<a href="http://www.bejson.com/ui/image2base64/" class="">
在线图片转Base64编码 </a>
</li>
<li>
<a href="http://www.bejson.com/convert/unicode_chinese/" class="">
unicode中文互转 </a>
</li>
<li>
<a href="http://www.bejson.com/convert/shorturl/" class="">
在线短地址互转 </a>
</li>
<li>
<a href="http://www.bejson.com/convert/unix/" class="">
Unix时间互转（日期转毫秒） </a>
</li>
<li>
<a href="http://www.bejson.com/convert/jinzhi/" class="">
进制转换 </a>
</li>
<li>
<a href="http://www.bejson.com/convert/ox2str/" class="">
16进制到文本字符串 </a>
</li>
<li>
<a href="http://www.bejson.com/convert/uplowercase/" class="">
字母大小写转换 </a>
</li>
 <li>
<a href="http://www.bejson.com/convert/rgbhex/" class="">
RGB原色和HEX16互转 </a>
</li>
<li>
<a href="http://www.bejson.com/convert/file2pdf/" class="">
在线文档转PDF </a>
</li>
<li>
<a href="http://www.bejson.com/convert/qrcode/" class="">
二维码生成和解码 </a>
</li>
<li>
<a href="http://www.bejson.com/convert/numtohz/" class="">
数字转中文（人民币） </a>
</li>
<li>
<a href="http://www.bejson.com/convert/filesize/" class="">
在线文件大小换算 </a>
</li>
<li>
<a href="http://www.bejson.com/convert/nativeascii/" class="">
NATIVE/ASCII在线转换工具 </a>
</li>
<li>
<a href="http://www.bejson.com/convert/htmlubb/" class="">
Html与UBB代码互相转换工具 </a>
</li>
<li>
<a href="http://www.bejson.com/convert/topinying/" class="">
汉字转换拼音 </a>
</li>
<li>
<a href="http://www.bejson.com/convert/fullhalf/" class="">
全角半角转换 </a>
</li>
<li>
<a href="http://www.bejson.com/convert/j2f/" class="">
简繁体火星文互转 </a>
</li>
<li>
<a href="http://www.bejson.com/convert/html2markdown/" class="">
Html转换为MarkDown工具 </a>
</li>
<li>
<a href="http://www.bejson.com/convert/video2audio/" class="circle-stress">
视频秒转音频 </a>
</li>
</ul>
</div>
<div class="footer-nav-con " id="29">
<ul>
<li>
<a href="http://www.bejson.com/othertools/compare/" class="">
字符串数字对比 </a>
</li>
<li>
<a href="http://www.bejson.com/othertools/stringarraysort/" class="">
字符串数组在线排序工具 </a>
</li>
<li>
<a href="http://www.bejson.com/othertools/regex/" class="">
正则表达式测试 </a>
</li>
<li>
<a href="http://www.bejson.com/testtools/xpath/" class="">
xpath测试 </a>
</li>
<li>
<a href="http://www.bejson.com/othertools/barcode/" class="">
条形码生成器 </a>
</li>
<li>
<a href="http://www.bejson.com/othertools/keycodes/" class="">
在线获取键盘按键值(ASCII码) </a>
</li>
<li>
<a href="http://www.bejson.com/othertools/cron/" class="">
Cron表达式生成器 </a>
 </li>
<li>
<a href="http://www.bejson.com/othertools/cronvalidate/" class="">
Cron表达式校验工具 </a>
</li>
<li>
<a href="http://www.bejson.com/othertools/fanyi/" class="">
中英互译 </a>
</li>
<li>
<a href="http://www.bejson.com/othertools/findelement/" class="">
寻找图片、链接或xpath寻找元素 </a>
</li>
<li>
<a href="http://www.bejson.com/othertools/finddif3/" class="">
文字对比找不同处 </a>
</li>
<li>
<a href="http://www.bejson.com/others/comparecode/" class="">
在线代码对比/合并工具 </a>
</li>
<li>
<a href="http://www.bejson.com/othertools/regex_create/" class="">
正则表达式代码生成工具 </a>
</li>
<li>
<a href="http://www.bejson.com/othertools/sqlAppend/" class="">
SQL追加或去除双引号 </a>
</li>
<li>
<a href="http://www.bejson.com/othertools/removeDuplicate/" class="">
去除重复字符串 </a>
</li>
<li>
<a href="http://www.bejson.com/othertools/sortwords/" class="">
在线根据首字母排序 </a>
</li>
<li>
<a href="http://www.bejson.com/chargeservice/ocr/" class="">
在线文字识别 </a>
</li>
<li>
<a href="http://www.bejson.com/other/qqskey/" class="">
获取QQ的key </a>
</li>
<li>
<a href="http://www.bejson.com/othertools/wordpress/" class="">
在线查询WordPress主题模板出处 </a>
</li>
<li>
<a href="http://www.bejson.com/othertools/pic2weibo/" class="">
根据微博图片寻找微博出处 </a>
</li>
<li>
<a href="http://www.bejson.com/othertools/ziponline/" class="">
在线解压缩获取文件列表名 </a>
</li>
<li>
<a href="http://www.bejson.com/othertools/createaliweixinqrcode/" class="">
支付宝、微信收款码共存 </a>
</li>
<li>
<a href="http://www.bejson.com/other/music/" class="">
轻音乐 </a>
</li>
</ul>
</div>
<div class="footer-nav-con active" id="138">
<ul>
<li>
<a href="http://www.bejson.com/doc/systemd/" class="">
Systemd 入门教程：命令篇 </a>
</li>
<li>
<a href="http://www.bejson.com/apidoc/jquery/" class="">
jQuery文档 </a>
</li>
<li>
<a href="https://v3.bootcss.com/components/" class="" target="_blank">
Bootstrap文档 </a>
</li>
<li>
<a href="http://www.bejson.com/doc/vuejs/" class="">
VueJs文档 </a>
</li>
<li>
<a href="http://www.bejson.com/doc/openqq/" class="">
腾讯开发平台 </a>
</li>
<li>
<a href="http://www.bejson.com/knownjson/aboutjsonp/" class="">
什么是jsonp </a>
</li>
<li>
<a href="https://developers.weixin.qq.com/doc/offiaccount/Getting_Started/Overview.html" class="" target="_blank">
微信公众平台开发文档 </a>
</li>
<li>
<a href="https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html" class="" target="_blank">
微信JSSDK开发文档 </a>
</li>
<li>
<a href="http://www.bejson.com/doc/payweixin/" class="">
微信支付开发文档 </a>
</li>
<li>
<a href="http://www.bejson.com/doc/payweixinsl/" class="">
微信支付服务商文档 </a>
</li>
<li>
<a href="https://developers.weixin.qq.com/miniprogram/dev/api/" class="" target="_blank">
微信小程序开发文档 </a>
</li>
<li>
<a href="http://www.bejson.com/doc/taobao/" class="">
淘宝开发文档 </a>
</li>
<li>
<a href="http://www.bejson.com/doc/alipay/" class="">
支付宝开发文档 </a>
</li>
<li>
<a href="http://www.bejson.com/doc/wisdomstores/" class="">
支付宝智慧门店文档 </a>
</li>
<li>
<a href="https://opendocs.alipay.com/open/399" class="" target="_blank">
支付宝开发商文档 </a>
</li>
<li>
<a href="http://www.bejson.com/doc/AndroidManifest/" class="">
Android权限大全 </a>
</li>
<li>
<a href="http://www.bejson.com/knownjson/aboutjson/" class="">
什么是JSON </a>
</li>
<li>
<a href="http://www.bejson.com/knownjson/demo/" class="">
举个栗子 </a>
</li>
<li>
<a href="http://www.bejson.com/knownjson/webInterface/" class="">
JSON API免费接口 </a>
</li>
<li>
<a href="index.html" class="">
正则表达式30分钟入门教程 </a>
</li>
<li>
<a href="http://www.bejson.com/knownjson/httpstate/" class="">
HTTP状态码查询 </a>
</li>
 <li>
<a href="http://www.bejson.com/doc/httpcontent/" class="">
HTTP Content对照表 </a>
</li>
<li>
<a href="http://www.bejson.com/doc/ascii/" class="">
ASCII码对照表 </a>
</li>
<li>
<a href="http://www.bejson.com/doc/port/" class="">
常用端口解释 </a>
</li>
</ul>
</div>
<div class="footer-nav-con " id="139">
<ul>
<li>
<a href="http://www.bejson.com/tool/weixindebug/" class="">
微信公众平台调试工具 </a>
</li>
<li>
<a href="http://www.bejson.com/tools/weixinpay/" class="">
微信公众平台支付接口调试工具 </a>
</li>
<li>
<a href="http://www.bejson.com/tools/weixinpayjsapi/" class="">
微信支付接口签名校验工具 </a>
</li>
<li>
<a href="http://www.bejson.com/tools/weixinmpcardsign/" class="">
微信卡券JSAPI签名校验工具 </a>
</li>
<li>
<a href="http://www.bejson.com/tools/weixinmpjsapisign/" class="">
微信 JS 接口签名校验工具 </a>
</li>
<li>
<a href="http://www.bejson.com/tools/weixinqydebug/" class="">
微信企业号调试工具 </a>
</li>
<li>
<a href="http://www.bejson.com/tools/qqwebtools/" class="">
QQ互联API调试工具 </a>
</li>
<li>
<a href="http://www.bejson.com/tools/taobaosessionPage/" class="">
淘宝oauth2.0测试工具 </a>
</li>
<li>
<a href="http://www.bejson.com/tools/taobaoapitool/" class="">
淘宝API测试工具 </a>
</li>
<li>
<a href="http://www.bejson.com/tools/taobaoerrorCodeSearch/" class="">
淘宝错误码查询工具 </a>
</li>
<li>
<a href="http://www.bejson.com/tools/taobao/" class="">
淘宝商品属性工具 </a>
</li>
<li>
<a href="http://www.bejson.com/tools/alipaycloudparse/" class="">
支付宝联调日志排查 </a>
</li>
<li>
<a href="https://openhome.alipay.com/platform/appDaily.htm?tab=info" class="" target="_blank">
支付宝API工具 </a>
</li>
<li>
<a href="http://www.bejson.com/tools/alipaytroubleshoot/" class="">
开发者自助排查工具 </a>
</li>
<li>
<a href="http://www.bejson.com/tools/weiboapi/" class="">
新浪微博API工具 </a>
</li>
</ul>
</div>
<div class="footer-nav-con " id="141">
<ul>
<li>
<a href="http://www.bejson.com/knownjson/webInterface/" class="">
免费JSON接口 </a>
</li>
<li>
<a href="http://www.bejson.com/tools/sitemap/" class="">
sitemap提交入口大全 </a>
</li>
<li>
<a href="http://www.bejson.com/tools/beian/" class="">
备案查询 </a>
</li>
<li>
<a href="http://www.bejson.com/soft/" class="">
常用软件下载 </a>
</li>
<li>
<a href="http://www.bejson.com/other/blogs/" class="">
Blogs </a>
</li>
<li>
<a href="http://www.bejson.com/knownjson/msg/" class="">
留言 </a>
</li>
<li>
<a href="http://www.bejson.com/other/whatisnew/" class="">
更新日志 </a>
</li>
<li>
<a href="http://www.bejson.com/other/ads/" class="">
广告招租 </a>
</li>
<li>
<a href="http://www.bejson.com/demo/sinaweather/" class="">
新浪天气API接口测试用例 </a>
</li>
</ul>
</div>
</div>
</div>
</div>

<footer class="html-footer3">
<div class="container">
<p>Copyright © 2011-2020 All rights
reserved.<a href="http://www.beian.miit.gov.cn" style="color: #CCC;" target="_blank">闽ICP备20009294号-1</a></p>
</div>
</footer>
<div class="xf-window">

<a class="xf-collection" onclick="_addFavorite()">
收藏
</a>
<a class="xf-feedback" data-toggle="modal" data-target="#navModal">
菜单
</a>
<a class="xf-share" data-toggle="modal" data-target="#navQq">
QQ
</a>
<div class="xf-totop" id="goTop">
<i class="icon icon-caret-up"></i>
</div>
</div>


<div class="modal fade" id="navModal">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span><span class="sr-only">关闭</span></button>
<h4 class="modal-title">BeJSON网站导航</h4>
</div>
<div class="modal-body">
<div class="modal-nav">
<h3>JSON工具</h3>
<ul>
<li>
<a href="http://www.bejson.com/json/format/" class="text-danger">
格式化校验 </a>
</li>
<li>
<a href="http://www.bejson.com/jsonviewernew/" class="">
JSON视图 </a>
</li>
<li>
 <a href="http://www.bejson.com/zhuanyi/" class="">
JSON压缩转义 </a>
</li>
<li>
<a href="http://www.bejson.com/json2javapojo/new/" class="">
JSON生成Java实体类 </a>
</li>
<li>
<a href="http://www.bejson.com/convert/json2csharp/" class="">
JSON转C#实体类 </a>
</li>
<li>
<a href="http://www.bejson.com/jsoneditoronline/" class="">
JSON在线编辑器 </a>
</li>
<li>
<a href="http://www.bejson.com/json/jsonsort/" class="">
JSON排序 </a>
</li>
<li>
<a href="http://www.bejson.com/color/" class="">
JSON着色 </a>
</li>
<li>
<a href="http://www.bejson.com/xml2json/" class="">
XML-JSON互转 </a>
</li>
<li>
<a href="http://www.bejson.com/jsontools/json2get/" class="">
JSON和GET请求字符串互转 </a>
</li>
<li>
<a href="http://www.bejson.com/json/col2json/" class="">
Excel转Json </a>
</li>
<li>
<a href="http://www.bejson.com/json/json2excel/" class="">
JSON转csv、excel </a>
</li>
<li>
<a href="http://www.bejson.com/json/json2yaml/" class="">
在线JSON转yaml,yaml转JSON </a>
</li>
<li>
<a href="http://www.bejson.com/explore/index_new/" class="">
JSON校验格式化工具(新) </a>
</li>
</ul>
</div>
<div class="modal-nav">
<h3>编码/加密</h3>
<ul>
<li>
<a href="http://www.bejson.com/enc/base64/" class="">
Base64加密、解密 </a>
</li>
<li>
<a href="http://www.bejson.com/enc/md5/" class="">
MD5加密 </a>
</li>
<li>
<a href="http://www.bejson.com/enc/md5dsc/" class="">
MD5解密 </a>
</li>
<li>
<a href="http://www.bejson.com/enc/aesdes/" class="">
DES,AES等对称加密解密 </a>
</li>
<li>
<a href="http://www.bejson.com/enc/rsa/" class="">
RSA,RSA2公钥私钥加密解密 </a>
</li>
<li>
<a href="http://www.bejson.com/enc/sha/" class="">
SHA加密 </a>
</li>
<li>
<a href="http://www.bejson.com/enc/escape/" class="">
Escape编码 </a>
</li>
<li>
<a href="http://www.bejson.com/enc/urlencode/" class="">
URL编码 </a>
</li>
<li>
<a href="http://www.bejson.com/enc/eval_package/" class="">
Javascript Eval加密解密 </a>
</li>
<li>
<a href="http://www.bejson.com/encrypt/jsobfuscate/" class="">
Javascript加密混淆 </a>
</li>
<li>
<a href="http://www.bejson.com/enc/morse/" class="">
摩斯密码加密解密 </a>
</li>
<li>
<a href="http://www.bejson.com/convert/unicode_chinese/" class="">
unicode中文互转 </a>
</li>
</ul>
</div>
<div class="modal-nav">
<h3>格式化</h3>
<ul>
<li>
<a href="http://www.bejson.com/jshtml_format/" class="text-danger">
Javascript/HTML压缩、格式化 </a>
</li>
<li>
<a href="http://www.bejson.com/otherformat/css/" class="">
CSS压缩、格式化 </a>
</li>
<li>
<a href="http://www.bejson.com/otherformat/xmlsort/" class="">
XML排序、压缩、格式化 </a>
</li>
<li>
<a href="http://www.bejson.com/otherformat/sql/" class="">
SQL压缩、格式化 </a>
</li>
</ul>
</div>
<div class="modal-nav">
<h3>网络</h3>
<ul>
<li>
<a href="http://www.bejson.com/network/profession_request_tools/" class="">
模拟HTTP请求工具 </a>
</li>
<li>
<a href="http://www.bejson.com/httputil/websocket/" class="">
在线模拟websocket请求工具 </a>
</li>
<li>
<a href="http://www.bejson.com/httputil/getip/" class="">
获取你的IP </a>
</li>
<li>
<a href="http://www.bejson.com/httputil/queryip/" class="">
获取IP信息 </a>
</li>
<li>
<a href="http://www.bejson.com/httputil/ip2addr/" class="">
IP定位周边信息 </a>
</li>
<li>
<a href="http://www.bejson.com/httputil/clientinfo/" class="">
获取您的浏览器信息 </a>
</li>
<li>
<a href="http://www.bejson.com/httputil/useragent/" class="">
常用USER_AGENT </a>
</li>
<li>
<a href="http://www.bejson.com/convert/ip2int/" class="">
IP转数字,数字转IP </a>
</li>
<li>
<a href="http://www.bejson.com/convert/subnetmask/" class="">
TCP/IP子网掩码计算换算 </a>
</li>
<li>
<a href="http://www.bejson.com/network/newsubnetmask/" class="">
子网掩码换算(新) </a>
</li>
<li>
<a href="http://www.bejson.com/httputil/cipher_suites/" class="">
SSL协议套件探测 </a>
</li>
</ul>
</div>
<div class="modal-nav">
<h3>前端</h3>
<ul>
<li>
<a href="http://www.bejson.com/ui/tuchuang/" class="">
图床 </a>
</li>
<li>
<a href="http://www.bejson.com/convert/gif2frame/" class="">
在线GIF转成帧 </a>
</li>
<li>
<a href="http://www.bejson.com/convert/html_js/" class="">
在线html转js,js转html </a>
</li>
<li>
<a href="http://www.bejson.com/ui/fontawesome/" class="">
fontawesome图标在线查询 </a>
</li>
<li>
<a href="http://www.bejson.com/othertools/keycodes/" class="">
在线获取键盘按键值(keycode,ascii码) </a>
</li>
<li>
<a href="http://www.bejson.com/convert/str2img/" class="">
字符生成线条字 </a>
</li>
<li>
<a href="http://www.bejson.com/ui/compress_img/" class="">
图片压缩工具 </a>
</li>
<li>
<a href="http://www.bejson.com/ui/gen_player/" class="">
生成音乐播放器 </a>
</li>
<li>
<a href="http://www.bejson.com/ui/photoshop/" class="">
在线photoshop </a>
</li>
<li>
<a href="http://www.bejson.com/pages/cooleditor/" class="">
在线代码编辑器 </a>
</li>
<li>
<a href="http://www.bejson.com/ui/borderradius/" class="">
在线生成圆角 </a>
</li>
<li>
<a href="https://h5.bce.baidu.com/store" class="" target="_blank">
H5模板在线制作 </a>
</li>
<li>
<a href="http://www.bejson.com/ui/icomaker/" class="">
ICO图标在线生成转换工具 </a>
</li>
<li>
<a href="http://www.bejson.com/ui/create_logo/" class="">
IOS安卓logo在线生成器 </a>
</li>
<li>
<a href="http://www.bejson.com/ui/ueditor/" class="">
ueditor在线代码编辑器 </a>
</li>
<li>
<a href="http://www.bejson.com/ui/runjs/" class="">
RunJS在线编辑器 </a>
</li>
<li>
<a href="http://www.bejson.com/ui/safecolor/" class="">
WEB安全色 </a>
</li>
<li>
<a href="http://www.bejson.com/ui/getcolor/" class="">
在线调色板 </a>
</li>
<li>
<a href="http://www.bejson.com/ui/imagehandler/" class="">
在线图片大小格式(支持webp)转换 </a>
</li>
<li>
<a href="http://www.bejson.com/ui/image2base64/" class="">
在线图片转Base64编码 </a>
</li>
<li>
<a href="https://www.iconfont.cn/plus/collections/index" class="" target="_blank">
阿里巴巴矢量图标库 </a>
</li>
<li>
<a href="http://www.bejson.com/ui/phonesize/" class="">
iPhone/iPad/Android UI尺寸规范 </a>
</li>
<li>
<a href="http://www.bejson.com/ui/svg_editor/" class="">
SVG代码编辑预览 </a>
</li>
<li>
<a href="https://fontawesome.com/icons?from=io" class="" target="_blank">
fontawesome矢量图标库 </a>
</li>
<li>
<a href="http://www.bejson.com/ui/openweb/" class="">
弹出窗口生成器 </a>
</li>
<li>
<a href="http://www.bejson.com/othertools/libcdn/" class="">
常用js库 </a>
</li>
<li>
<a href="http://www.bejson.com/ui/texteditor/" class="">
在线自动排版工具 </a>
</li>
</ul>
</div>
<div class="modal-nav">
<h3>后端</h3>
<ul>
<li>
<a href="http://www.bejson.com/json2javapojo/new/" class="">
JSON生成Java实体类 </a>
</li>
<li>
<a href="https://java.bejson.com/generator/" class="" target="_blank">
SQL生成Java代码 </a>
</li>
<li>
<a href="http://www.bejson.com/convert/json2csharp/" class="">
JSON转C#实体类 </a>
</li>
<li>
<a href="http://www.bejson.com/devtools/sql2pojo/" class="">
mysql转Java实体类 </a>
</li>
<li>
<a href="http://www.bejson.com/devtools/sql2csharppojo/" class="">
SQL转CSharp实体类 </a>
</li>
<li>
<a href="http://www.bejson.com/othertools/sql2pojo/" class="">
oracle转Java实体类 </a>
</li>
<li>
<a href="http://www.bejson.com/devtools/sqlview/" class="">
数据库插入、修改语句字段视图 </a>
</li>
<li>
<a href="http://www.bejson.com/devtools/properties2yaml/" class="">
properties转yaml </a>
</li>
 <li>
<a href="http://www.bejson.com/validators/yaml_editor/" class="">
YAML、YML在线编辑(校验)器 </a>
</li>
</ul>
</div>
<div class="modal-nav">
<h3>转换</h3>
<ul>
<li>
<a href="http://www.bejson.com/convert/html_string/" class="">
字符串拼接（多语言） </a>
</li>
<li>
<a href="http://www.bejson.com/convert/camel_underscore/" class="">
驼峰转下划线，下划线转驼峰 </a>
</li>
<li>
<a href="http://www.bejson.com/convert/html_js/" class="">
在线html转js，js转html </a>
</li>
<li>
<a href="http://www.bejson.com/convert/ueditor2markdown/" class="">
在线ueditor富文本编辑器转markdown语法 </a>
</li>
<li>
<a href="http://www.bejson.com/convert/deserialize/" class="">
PHP反序列化成JSON和代码 </a>
</li>
<li>
<a href="http://www.bejson.com/ui/imagehandler/" class="">
在线图片大小格式(支持webp)转化 </a>
</li>
<li>
<a href="http://www.bejson.com/convert/image_to_svg/" class="">
jpg，png图片在线转svg </a>
</li>
<li>
<a href="http://www.bejson.com/convert/map/" class="">
在线地图经纬度定位换算 </a>
</li>
<li>
<a href="http://www.bejson.com/ui/px2em/" class="">
px转em，em转px </a>
</li>
<li>
<a href="http://www.bejson.com/ui/image2base64/" class="">
在线图片转Base64编码 </a>
</li>
<li>
<a href="http://www.bejson.com/convert/unicode_chinese/" class="">
unicode中文互转 </a>
</li>
<li>
<a href="http://www.bejson.com/convert/shorturl/" class="">
在线短地址互转 </a>
</li>
<li>
<a href="http://www.bejson.com/convert/unix/" class="">
Unix时间互转（日期转毫秒） </a>
</li>
<li>
<a href="http://www.bejson.com/convert/jinzhi/" class="">
进制转换 </a>
</li>
<li>
<a href="http://www.bejson.com/convert/ox2str/" class="">
16进制到文本字符串 </a>
</li>
<li>
<a href="http://www.bejson.com/convert/uplowercase/" class="">
字母大小写转换 </a>
</li>
<li>
<a href="http://www.bejson.com/convert/rgbhex/" class="">
RGB原色和HEX16互转 </a>
</li>
<li>
<a href="http://www.bejson.com/convert/file2pdf/" class="">
在线文档转PDF </a>
</li>
<li>
<a href="http://www.bejson.com/convert/qrcode/" class="">
二维码生成和解码 </a>
</li>
<li>
<a href="http://www.bejson.com/convert/numtohz/" class="">
数字转中文（人民币） </a>
</li>
<li>
<a href="http://www.bejson.com/convert/filesize/" class="">
在线文件大小换算 </a>
</li>
<li>
<a href="http://www.bejson.com/convert/nativeascii/" class="">
NATIVE/ASCII在线转换工具 </a>
</li>
<li>
<a href="http://www.bejson.com/convert/htmlubb/" class="">
Html与UBB代码互相转换工具 </a>
</li>
<li>
<a href="http://www.bejson.com/convert/topinying/" class="">
汉字转换拼音 </a>
</li>
<li>
<a href="http://www.bejson.com/convert/fullhalf/" class="">
全角半角转换 </a>
</li>
<li>
<a href="http://www.bejson.com/convert/j2f/" class="">
简繁体火星文互转 </a>
</li>
<li>
<a href="http://www.bejson.com/convert/html2markdown/" class="">
Html转换为MarkDown工具 </a>
</li>
<li>
<a href="http://www.bejson.com/convert/video2audio/" class="text-danger">
视频秒转音频 </a>
</li>
</ul>
</div>
<div class="modal-nav">
<h3>其他</h3>
<ul>
 <li>
<a href="http://www.bejson.com/othertools/compare/" class="">
字符串数字对比 </a>
</li>
<li>
<a href="http://www.bejson.com/othertools/stringarraysort/" class="">
字符串数组在线排序工具 </a>
</li>
<li>
<a href="http://www.bejson.com/othertools/regex/" class="">
正则表达式测试 </a>
</li>
<li>
<a href="http://www.bejson.com/testtools/xpath/" class="">
xpath测试 </a>
</li>
<li>
<a href="http://www.bejson.com/othertools/barcode/" class="">
条形码生成器 </a>
</li>
<li>
<a href="http://www.bejson.com/othertools/keycodes/" class="">
在线获取键盘按键值(ASCII码) </a>
</li>
<li>
<a href="http://www.bejson.com/othertools/cron/" class="">
Cron表达式生成器 </a>
</li>
<li>
<a href="http://www.bejson.com/othertools/cronvalidate/" class="">
Cron表达式校验工具 </a>
</li>
<li>
<a href="http://www.bejson.com/othertools/fanyi/" class="">
中英互译 </a>
</li>
<li>
<a href="http://www.bejson.com/othertools/findelement/" class="">
寻找图片、链接或xpath寻找元素 </a>
</li>
<li>
<a href="http://www.bejson.com/othertools/finddif3/" class="">
文字对比找不同处 </a>
</li>
<li>
<a href="http://www.bejson.com/others/comparecode/" class="">
在线代码对比/合并工具 </a>
</li>
<li>
<a href="http://www.bejson.com/othertools/regex_create/" class="">
正则表达式代码生成工具 </a>
</li>
<li>
<a href="http://www.bejson.com/othertools/sqlAppend/" class="">
SQL追加或去除双引号 </a>
</li>
<li>
<a href="http://www.bejson.com/othertools/removeDuplicate/" class="">
去除重复字符串 </a>
</li>
<li>
<a href="http://www.bejson.com/othertools/sortwords/" class="">
在线根据首字母排序 </a>
</li>
<li>
<a href="http://www.bejson.com/chargeservice/ocr/" class="">
在线文字识别 </a>
</li>
<li>
<a href="http://www.bejson.com/other/qqskey/" class="">
获取QQ的key </a>
</li>
<li>
<a href="http://www.bejson.com/othertools/wordpress/" class="">
在线查询WordPress主题模板出处 </a>
</li>
<li>
<a href="http://www.bejson.com/othertools/pic2weibo/" class="">
根据微博图片寻找微博出处 </a>
</li>
<li>
<a href="http://www.bejson.com/othertools/ziponline/" class="">
在线解压缩获取文件列表名 </a>
</li>
<li>
<a href="http://www.bejson.com/othertools/createaliweixinqrcode/" class="">
支付宝、微信收款码共存 </a>
</li>
<li>
<a href="http://www.bejson.com/other/music/" class="">
轻音乐 </a>
</li>
</ul>
</div>
<div class="modal-nav">
<h3>文档</h3>
<ul>
<li>
<a href="http://www.bejson.com/doc/systemd/" class="">
Systemd 入门教程：命令篇 </a>
</li>
<li>
<a href="http://www.bejson.com/apidoc/jquery/" class="">
jQuery文档 </a>
</li>
<li>
<a href="https://v3.bootcss.com/components/" class="" target="_blank">
Bootstrap文档 </a>
</li>
<li>
<a href="http://www.bejson.com/doc/vuejs/" class="">
VueJs文档 </a>
</li>
<li>
<a href="http://www.bejson.com/doc/openqq/" class="">
腾讯开发平台 </a>
</li>
<li>
<a href="http://www.bejson.com/knownjson/aboutjsonp/" class="">
什么是jsonp </a>
</li>
<li>
<a href="https://developers.weixin.qq.com/doc/offiaccount/Getting_Started/Overview.html" class="" target="_blank">
微信公众平台开发文档  </a>
</li>
<li>
<a href="https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html" class="" target="_blank">
微信JSSDK开发文档 </a>
</li>
<li>
<a href="http://www.bejson.com/doc/payweixin/" class="">
微信支付开发文档 </a>
</li>
<li>
<a href="http://www.bejson.com/doc/payweixinsl/" class="">
微信支付服务商文档 </a>
</li>
<li>
<a href="https://developers.weixin.qq.com/miniprogram/dev/api/" class="" target="_blank">
微信小程序开发文档 </a>
</li>
<li>
<a href="http://www.bejson.com/doc/taobao/" class="">
淘宝开发文档 </a>
</li>
<li>
<a href="http://www.bejson.com/doc/alipay/" class="">
支付宝开发文档 </a>
</li>
<li>
<a href="http://www.bejson.com/doc/wisdomstores/" class="">
支付宝智慧门店文档 </a>
</li>
<li>
<a href="https://opendocs.alipay.com/open/399" class="" target="_blank">
支付宝开发商文档 </a>
</li>
<li>
<a href="http://www.bejson.com/doc/AndroidManifest/" class="">
Android权限大全 </a>
</li>
<li>
<a href="http://www.bejson.com/knownjson/aboutjson/" class="">
什么是JSON </a>
</li>
<li>
<a href="http://www.bejson.com/knownjson/demo/" class="">
举个栗子 </a>
</li>
<li>
<a href="http://www.bejson.com/knownjson/webInterface/" class="">
JSON API免费接口 </a>
</li>
<li>
<a href="index.html" class="">
正则表达式30分钟入门教程 </a>
</li>
<li>
<a href="http://www.bejson.com/knownjson/httpstate/" class="">
HTTP状态码查询 </a>
</li>
<li>
<a href="http://www.bejson.com/doc/httpcontent/" class="">
HTTP Content对照表 </a>
</li>
<li>
<a href="http://www.bejson.com/doc/ascii/" class="">
ASCII码对照表 </a>
</li>
<li>
<a href="http://www.bejson.com/doc/port/" class="">
常用端口解释 </a>
</li>
</ul>
</div>
<div class="modal-nav">
<h3>平台工具</h3>
<ul>
<li>
<a href="http://www.bejson.com/tool/weixindebug/" class="">
微信公众平台调试工具 </a>
</li>
<li>
<a href="http://www.bejson.com/tools/weixinpay/" class="">
微信公众平台支付接口调试工具 </a>
</li>
<li>
<a href="http://www.bejson.com/tools/weixinpayjsapi/" class="">
微信支付接口签名校验工具 </a>
</li>
<li>
<a href="http://www.bejson.com/tools/weixinmpcardsign/" class="">
微信卡券JSAPI签名校验工具 </a>
</li>
<li>
<a href="http://www.bejson.com/tools/weixinmpjsapisign/" class="">
微信 JS 接口签名校验工具 </a>
</li>
<li>
<a href="http://www.bejson.com/tools/weixinqydebug/" class="">
微信企业号调试工具 </a>
</li>
<li>
<a href="http://www.bejson.com/tools/qqwebtools/" class="">
QQ互联API调试工具 </a>
</li>
<li>
<a href="http://www.bejson.com/tools/taobaosessionPage/" class="">
淘宝oauth2.0测试工具 </a>
</li>
<li>
<a href="http://www.bejson.com/tools/taobaoapitool/" class="">
淘宝API测试工具 </a>
</li>
<li>
<a href="http://www.bejson.com/tools/taobaoerrorCodeSearch/" class="">
淘宝错误码查询工具 </a>
</li>
<li>
<a href="http://www.bejson.com/tools/taobao/" class="">
淘宝商品属性工具 </a>
</li>
<li>
<a href="http://www.bejson.com/tools/alipaycloudparse/" class="">
支付宝联调日志排查 </a>
</li>
 <li>
<a href="https://openhome.alipay.com/platform/appDaily.htm?tab=info" class="" target="_blank">
支付宝API工具 </a>
</li>
<li>
<a href="http://www.bejson.com/tools/alipaytroubleshoot/" class="">
开发者自助排查工具 </a>
</li>
<li>
<a href="http://www.bejson.com/tools/weiboapi/" class="">
新浪微博API工具 </a>
</li>
</ul>
</div>
<div class="modal-nav">
<h3>更多</h3>
<ul>
<li>
<a href="http://www.bejson.com/knownjson/webInterface/" class="">
免费JSON接口 </a>
</li>
<li>
<a href="http://www.bejson.com/tools/sitemap/" class="">
sitemap提交入口大全 </a>
</li>
<li>
<a href="http://www.bejson.com/tools/beian/" class="">
备案查询 </a>
</li>
<li>
<a href="http://www.bejson.com/soft/" class="">
常用软件下载 </a>
</li>
<li>
<a href="http://www.bejson.com/other/blogs/" class="">
Blogs </a>
</li>
<li>
<a href="http://www.bejson.com/knownjson/msg/" class="">
留言 </a>
</li>
<li>
<a href="http://www.bejson.com/other/whatisnew/" class="">
更新日志 </a>
</li>
<li>
<a href="http://www.bejson.com/other/ads/" class="">
广告招租 </a>
</li>
<li>
<a href="http://www.bejson.com/demo/sinaweather/" class="">
新浪天气API接口测试用例 </a>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>

<div class="modal fade" id="navQq">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span><span class="sr-only">关闭</span></button>
<h4 class="modal-title">BeJSON交流QQ群</h4>
</div>
<div class="modal-body" id="modalQQ">
</div>
</div>
</div>
</div>




<script src="http://www.bejson.com/static/bejson/js/global.min.js?v=20200630" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">

    //添加qq列表
    createQQlist('/static/bejson/img/qq/');
    //菜单active
    $('.grade-li.grade-li-active').parents('li.dropdown').addClass('active');

    //初始化最近使用功能
    recordRecentUse('正则表达式30分钟入门教程', '/knownjson/regexJiaocheng/');
    recentUseList();

</script>

</body>
</html>